Routing applications for navigation

ABSTRACT

Some embodiments provide a mapping application that provides routing information to third-party applications on a device. The mapping application receives route data that includes first and second locations. Based on the route data, the mapping application provides a set of routing applications that provide navigation information. The mapping application receives a selection of a routing application in the set of routing applications. The mapping application passes the route data to the selected routing application in order for the routing application to provide navigation information.

CLAIM OF BENEFIT TO PRIOR APPLICATIONS

This application claims the benefit of U.S. Provisional PatentApplication 61/655,995, filed Jun. 5, 2012; U.S. Provisional PatentApplication 61/656,015, filed Jun. 6, 2012; U.S. Provisional PatentApplication 61/656,080, filed Jun. 6, 2012; U.S. Provisional PatentApplication 61/657,858, filed Jun. 10, 2012; and U.S. Provisional PatentApplication 61/699,813, filed Sep. 11, 2012. U.S. Provisional PatentApplications 61/655,995, 61/656,015, 61/656,080, 61/657,858 and61/699,813 are hereby incorporated by reference.

BACKGROUND

Many of today's navigation devices allow a user to provide location dataand, in response, the device will provide directions from a location toone or more locations. The navigation devices may also include otherfeatures to facilitate providing directions to the user. For example,some devices include turn-by-turn navigation direction as well as a listof directions. Numerous devices include a speech capability thatverbally provides directions for the user as the user is traveling. Somenavigation devices provide traffic information (verbally and/orgraphically) so that the user may change routes to avoid areas of heavytraffic.

Regardless of feature included in these navigation devices, the devicesare typically designed to provide directions for a particular purpose.For example, a countless number of navigation devices are designed toprovide directions for driving. Some devices are designed for providingdirections on trails for hiking. Other devices are designed to providedirections for cycling.

BRIEF SUMMARY

Some embodiments of the invention provide an integrated mappingapplication that includes several useful modalities, including locationbrowsing, map searching, route identifying and route navigatingoperations. These operations are complex tasks that, whilecomplementary, each have very different user interface requirements. Themapping application in some embodiment has a novel UI design thataddresses the difficult challenges of integrating the needed controlsfor each of its different modalities into a seamless and cohesiveapplication user interface. The novel UI design and the application aredefined to be executed by a device that has a touch-sensitive screenthat displays the output of the application. In some embodiments, thisdevice has a multi-touch interface for allowing a user to provide touchand gestural inputs through the screen to interact with the application.

In some embodiments, a goal of the mapping application UI is thaton-screen controls are kept to a minimum in order to display as much ofthe interactive map as possible. One element in this design is a buttoncluster that floats on top of the content itself rather than taking upthe full-width of the screen, as typical in phone UI elements.Additionally, this cluster adapts to the task at hand, adjusting itscontents in an animated fashion when a user moves between the differentmodalities (e.g., between browsing, searching, routing and navigating).This common element with an adaptive nature enables the mappingapplication to optimize for different tasks while maintaining aconsistent look and interaction model while moving between those tasks.

One example of an adaptive, floating control in some embodiments is thelist control. When there are opportunities to display a list of items,be it a list of instructions in a route or a list of search results whenmultiple results are found for a given query, the mapping application ofsome embodiments displays a list button as one of the floating controls.Tapping the list button brings up a modal list view in some embodiments.Having a modal list view keeps the mapping application simple and themap front and center. In some embodiments, the list view itself isadapted and optimized for the type of list being displayed, in thatsearch results will be displayed with star ratings when available androute steps will include instructional arrows.

Another floating control is a control for viewing map or inspecting aroute in three dimensions (3D). The mapping application provides the 3Dcontrol as a quick mechanism of getting into and out of 3D. This controlalso serves as (1) an indicator that the current view is a 3D view, and(2) an indicator that a 3D perspective is available for a given map view(e.g., a map view that is zoomed out might not have a 3D viewavailable).

In addition to the 3D control, the mapping application of someembodiments allows a user to transition a map view from atwo-dimensional (2D) presentation to a 3D presentation through gesturalinputs of the multi-touch interface of the device. For instance, througha two finger gestural input, the user can be made to experience“pushing” down a 2D map view into a 3D map view, or “pulling” up a 3Dmap view into a 2D map view. This can also be thought of as pulling downa virtual camera from a 2D (directly from above) view into a 3D (sideangle) view through the two-finger gesture. As further described below,the 3D view of the map is generated in some embodiments by rendering themap view from a particular position that can be conceptually thought ofas the position of a virtual camera that is capturing the map view.

Through gestural inputs, the mapping application allows a user to alsorotate a 2D or 3D map in some embodiments. The mapping application insome embodiments is a vector mapping application that allows for directmanipulations (such as rotation and 2D/3D manipulations) of the mapwhile browsing. However, some of the effects to the map can bedisorienting. Without an easy way to get back to north-up orientation(i.e., an orientation where the north direction is aligned with the topof the device), some user's may have difficulty interacting with the mapviews. To solve this, the mapping application of some embodimentsprovides an unobtrusive floating compass control on the map that servesboth as an indicator that points to north and as a button to restore anorth-up orientation. To further minimize clutter on the map, themapping application only shows the button only in a limited number ofsituations (such as when the map is rotated, etc.).

In order to minimize the number of on-screen controls, certain lessfrequently used actions are placed in a secondary UI screen behind a“page curl” that is displayed on a map view that is provided by theapplication. In some embodiments, the page curl is permanently displayedon at least some of the map views that the application provides. Forinstance, in some embodiments, the application displays the page curlpermanently on the initial map view that it provides for allowing a userto browse or search a location or to identify a route. The page curl isa selectable UI item that (1) indicates the location of another set ofcontrols that are conceptually “behind” the current view, and (2) whenselected, directs the application to present an animation that “peels”off the current view to display another view that shows the other set ofcontrols. The use of the page curl allows the application to displaymore of the map while offering an unobtrusive way to access furtherfunctionality that is provided by the other set of controls.Additionally, in some embodiments, the application does not use the pagecurl in map views where the additional functionality is deemed to beinappropriate to the task at hand. For instance, in some embodiments,the application does not display this page curl while presenting the mapview that is used during navigation.

The search field of the mapping application in some embodiments isanother UI tool that the application employs to make the transitionbetween the different modalities seamless. In some embodiments, a usercan initiate a search by tapping in the search field. This directs theapplication to present an animation that (1) presents an on-screenkeyboard and (2) opens a search table full of invaluable completions.This table has some important subtleties. When the search field istapped and before the terms are edited, or when the search field isempty, the table contains a list of “recents,” which in some embodimentsare recent searches and route directions that the user has requested.This makes it very easy to quickly bring up recently accessed results.

After any edit in the search field, the table is filled with searchcompletions both from local sources (e.g., bookmarks, contacts, recentsearches, recent route directions, etc.) and remote servers. Someembodiments, however, include recent route directions only when the userhas not yet entered any text into the search field. Once text isentered, the mapping application removes recent route directions fromthe search completions table. The incorporation of the user's contactcard into the search interface adds additional flexibility to thedesign. When showing recents, a route from current location to theuser's home is always offered in some embodiments, while it is offeredin the contexts that are deemed to be “appropriate” in otherembodiments. Also, when the search term is a prefix of an address label(e.g., ‘Wo’ for ‘Work’), the application presents the user's labeledaddress as a completion in the search table in some embodiments.Together these behaviors make the search UI a very powerful way to getresults onto a map from a variety of sources. In addition to allowing auser to initiate a search, the presence of the text field in the primarymap view in some embodiments also allows users to see the querycorresponding to search results on the map and to remove those searchresults by clearing the query.

Another way that the mapping application tightly integrates the searchand route identification experience is by providing several differentways to get directions. As mentioned above, the search table providesquick access to recently used routes. For any location selected on themap view, the mapping application in some embodiments also presents aninfo display banner (e.g., a window) that displays a quick-routenavigation UI control (e.g., button) that fetches a route (e.g., adriving route) from the current location to that pin without everleaving the map view. In addition, the mapping application also providesa selectable direction UI control (e.g., button) on the main map view(e.g., in the top left corner), which when selected presents a modaldirections editing interface that enables the user to request morecustomized routes, such as routes that do not begin from the currentlocation or a walking route instead of just driving routes. In someembodiments, the mapping application provides several differentselectable routes based on a route query that it receives through thedirection UI control. In such embodiments, the user can then select oneof the routes. In some embodiments, one of the routes is presented as adefault selected route, and the user can change the selected route to beone of the other presented routed. It should be noted that while neitherthe route history entries in the search field nor quick-route navigationcontrol perform actions that cannot be achieved with the direction item,they serve as important accelerators that make it much easier to obtainthe most commonly desired routes.

Once route directions have been obtained, they remain present until theyare explicitly cleared. This enables the mapping application to enter amode that is optimized for navigation. The navigation mode has manynovel features. One novel feature is that at any time while navigating,the user can move between a full-screen mode that presents a displayview optimized for turn-by-turn directions and an overview mode thatpresents a display view of the remaining route that better accommodatebrowsing. Some embodiments also allow for a search to be performed whilenavigating in the overview mode. For instance, some embodiments providea pull down handle that allows the search field to be pulled into theoverview display. Alternatively, or conjunctively, some embodimentsallow for searches to be performed during navigation through avoice-recognition input of the device of some embodiments.

Continuity between the overview mode and the full-screen mode isachieved by an in-place transition in the map and a constant set ofcontrols. To enter full-screen mode, the application in some embodiments(1) automatically hides the floating controls and a bar (containing UIcontrols) along the top, (2) completely uncurls the map. During thefull-screen mode, the application restricts touch interaction with themap. In some embodiments, a tap is required to access the controls thatwere automatically hidden, and even then they are adapted towards afull-screen navigation look, with a prominent display of the ETA in thebar along the top.

Another novel feature is that at any time while navigating, it is alwayseasy to stop navigation in both overview and full-screen modes byselecting a control to end navigation. Another novel feature is that atany time while navigating, the user can modify the turn-by-turnnavigation view to present alternative three-dimensional (3D) views orto present even a two-dimensional (2D) view. In some embodiments, the 3Dturn-by-turn navigation is an animated rendering of navigated route thatis rendered from the vantage point of a virtual camera that traversesalong the direction of the route based on the traversal direction andspeed of the user, which in some embodiments is captured by directionaldata (e.g., GPS data, triangulated cell-tower data, etc.) associatedwith the device.

While navigating, the mapping application of some embodiments allows auser to change the position of the virtual camera (i.e., the positionfrom which the navigated route is rendered) through gestural input onthe device's screen. Movement of the virtual camera (i.e., movement ofthe position from which the route is rendered) allows the mappingapplication to present alternative 3D view. Some embodiments even usethe virtual camera to render a top-down 2D view for the turn-by-turnnavigation, while other embodiments render the top-down 2D view byzooming in and out of a 2D map. In some embodiments, the mappingapplication presents a 3D button that serves both as 3D indicator and 3Dinitiator/toggle.

Different embodiments provide different gestural inputs to adjust the3D/2D view during turn-by-turn navigation. In some embodiments, thegestural input is a two-finger pinching/spreading operation to adjustthe zoom level. This adjustment of the zoom level inherently adjusts theposition and rotation of the camera with respect to the route direction,and thereby changes the 3D perspective view of the route direction.Alternatively, other embodiments provide other gestural inputs (e.g., afinger drag operation) that change the position of the camera instead ofor in addition to the zoom operation. In yet other embodiments, agestural input (e.g., a finger drag operation) momentarily changes theviewing direction of the camera to allow a user to momentarily glance toa side of the navigated route. In these embodiments, the applicationreturns the camera to its previous view along the route after a shorttime period.

Another novel feature of the mapping application is therealistic-looking road signs that are used during navigation and duringthe browsing of an identified route. In some embodiments, the signs aretextured images that bear a strong resemblance to actual highway signs,and they include instructional arrows, text, shields, and distance. Themapping application of some embodiments presents a wide number ofvariants in a large number of different contexts. For maneuvers that areclose together, a secondary sign is presented hanging just beneath theprimary sign. Signs are presented in different colors according to theregional norms in some embodiments. Also, as one maneuver is passedduring navigation, the mapping application animates the sign away with amotion that mimics a sign passing overhead on the highway. When amaneuver is approached, the mapping application draws attention to thesign with a subtle animation (e.g., a shimmer across the entire sign).

As mentioned above, the mapping application of some embodiments uses therealistic-looking road signs to provide a novel method of browsing aroute that it has identified. For instance, in some embodiments, themapping application allows a user to select and scroll through the signsof the junctures along an identified route when it presents theidentified route to the user. As the user scrolls through each sign, theportion of the route associated with the currently in-focus sign ispresented or highlighted (e.g., through color highlighting or throughanother geometry (e.g., a circle or other marker) marking the portion).Alternatively, or conjunctively, the user can scroll through each signby selecting different junctures of the route in order to view the signassociated with that juncture. Some of these embodiments provide thisinteraction only for routes that are not defined between a user'scurrent location and a destination. In other words, these embodiments donot provide this browsing experience when a route is presented thatconnects the user's current location to a destination. Otherembodiments, however, provide the route browsing experience through theroad signs in other or all other contexts in which a route is displayed.

In some embodiments, the mapping application provides a feature thatenables integration with other routing applications available on or forthe device. When a user specifies start and ends locations and enablesthe feature when requesting route directions, the mapping applicationprovides the user with a list of relevant third-party routingapplications. In some embodiments, the mapping application displays therelevant routing applications in two sections—a section for relevantrouting applications that are installed on the device and anothersection for relevant routing applications that are available but not yetinstalled on the device. The user may then select one of the displayedrouting applications to provide route directions or select an availablerouting application to install and then provide route directions.

The above-described features as well as some other features of themapping application of some embodiments are further described below. Inthe description above and below, many of the features are described aspart of an integrated mapping application that provides novel locationbrowsing, locating searching, route identifying and route navigatingoperations. However, one of ordinary skill will realize that these noveloperations are performed in other embodiments by applications that donot perform all of these operations, or perform other operations inaddition to these operations.

The preceding Summary is intended to serve as a brief introduction tosome embodiments of the invention. It is not meant to be an introductionor overview of all inventive subject matter disclosed in this document.The Detailed Description that follows and the Drawings that are referredto in the Detailed Description will further describe the embodimentsdescribed in the Summary as well as other embodiments. Accordingly, tounderstand all the embodiments described by this document, a full reviewof the Summary, Detailed Description and the Drawings is needed.Moreover, the claimed subject matters are not to be limited by theillustrative details in the Summary, Detailed Description and theDrawing, but rather are to be defined by the appended claims, becausethe claimed subject matters can be embodied in other specific formswithout departing from the spirit of the subject matters.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features of the invention are set forth in the appendedclaims. However, for purposes of explanation, several embodiments of theinvention are set forth in the following figures.

FIG. 1 conceptually illustrates an example of a device that executes anintegrated mapping application of some embodiments of the invention.

FIG. 2 conceptually illustrates an example of an integrated applicationadaptively modifying a floating control cluster according to someembodiments of the invention.

FIG. 3 conceptually illustrates an example of an integrated applicationadaptively modifying a floating control cluster according to someembodiments of the invention.

FIG. 4 conceptually illustrates how the mapping application of someembodiments provides a 3D control as a quick mechanism of entering a 3Dmode for viewing a map location in three dimensions.

FIG. 5 conceptually illustrates a user's interaction with theapplication of some embodiments running on a user's device in order todisplay the search table with a list of the user's recent searches andrecent route directions.

FIG. 6 conceptually illustrates an example of a user's interaction withthe mapping application of some embodiments to obtain routingdirections.

FIG. 7 conceptually illustrates an example of a user's interaction withthe mapping application of some embodiments to obtain routingdirections.

FIG. 8 conceptually illustrates an example of graphical user interface(GUI) of a mapping application of some embodiments that provides athird-party routing application feature.

FIG. 9 conceptually illustrates an example of installing a third-partyrouting application and using the third-party routing application toprovide route information.

FIG. 10 conceptually illustrates another example of installing athird-party routing application and using the third-party routingapplication to provide route information.

FIG. 11 conceptually illustrates an example of a user's interaction withthe application of some embodiments to display a search table with alist of the user's recent searches and recent route directions.

FIG. 12 conceptually illustrates an example of browsing a product pageof an available third-party routing application according to someembodiments of the invention.

FIG. 13 conceptually illustrates a software architecture of a mappingapplication of some embodiments.

FIG. 14 conceptually illustrates a process of some embodiments forimplementing a third-party routing application feature.

FIG. 15 conceptually illustrates a process of some embodiments forindexing a third-party routing application.

FIG. 16 conceptually illustrates an example of indexing an applicationaccording to some embodiments of the invention.

FIG. 17 conceptually illustrates a process of some embodiments foridentifying third-party routing applications available on an applicationsource.

FIG. 18 conceptually illustrates a process of some embodiments forsearching for third-party routing applications.

FIG. 19 conceptually illustrates a process of some embodiments forfiltering search results of third-party routing applications.

FIG. 20 conceptually illustrates is an architecture of a mobilecomputing device with which some embodiments are implemented.

FIG. 21 conceptually illustrates an electronic device with which someembodiments of the invention are implemented.

FIG. 22 conceptually illustrates a map service operating environmentaccording to some embodiments.

DETAILED DESCRIPTION

In the following detailed description of the invention, numerousdetails, examples, and embodiments of the invention are set forth anddescribed. However, it will be clear and apparent to one skilled in theart that the invention is not limited to the embodiments set forth andthat the invention may be practiced without some of the specific detailsand examples discussed.

Some embodiments of the invention provide an integrated mappingapplication that includes several useful modalities, including locationbrowsing, map searching, route identifying and route navigatingoperations. These operations are complex tasks that, whilecomplementary, each have very different user interface requirements. Themapping application in some embodiment has a novel UI design thataddresses the difficult challenges of integrating the needed controlsfor each of its different modalities into a seamless and cohesiveapplication user interface. The novel UI design and the application aredefined to be executed by a device that has a touch-sensitive screenthat displays the output of the application. In some embodiments, thisdevice has a multi-touch interface for allowing a user to provide touchand gestural inputs through the screen to interact with the application.

In some embodiments, a goal of the mapping application UI is thaton-screen controls are kept to a minimum in order to display as much ofthe interactive map as possible. One element in this design is a buttoncluster that floats on top of the content itself rather than taking upthe full-width of the screen, as typical in phone UI elements.Additionally, this cluster adapts to the task at hand, adjusting itscontents in an animated fashion when a user moves between the differentmodalities (e.g., between browsing, searching, routing and navigating).This common element with an adaptive nature enables the mappingapplication to optimize for different tasks while maintaining aconsistent look and interaction model while moving between those tasks.

One example of an adaptive, floating control in some embodiments is thelist control. When there are opportunities to display a list of items,be it a list of instructions in a route or a list of search results whenmultiple results are found for a given query, the mapping application ofsome embodiments displays a list button as one of the floating controls.Tapping the list button brings up a modal list view in some embodiments.Having a modal list view keeps the mapping application simple and themap front and center. In some embodiments, the list view itself isadapted and optimized for the type of list being displayed, in thatsearch results will be displayed with star ratings when available androute steps will include instructional arrows.

Another floating control is a control for viewing map or inspecting aroute in three dimensions (3D). The mapping application provides the 3Dcontrol as a quick mechanism of getting into and out of 3D. This controlalso serves as (1) an indicator that the current view is a 3D view, and(2) an indicator that a 3D perspective is available for a given map view(e.g., a map view that is zoomed out might not have a 3D viewavailable).

In addition to the 3D control, the mapping application of someembodiments allows a user to transition a map view from atwo-dimensional (2D) presentation to a 3D presentation through gesturalinputs of the multi-touch interface of the device. For instance, througha two finger gestural input, the user can be made to experience“pushing” down a 2D map view into a 3D map view, or “pulling” up a 3Dmap view into a 2D map view. This can also be thought of as pulling downa virtual camera from a 2D (directly from above) view into a 3D (sideangle) view through the two-finger gesture. As further described below,the 3D view of the map is generated in some embodiments by rendering themap view from a particular position that can be conceptually thought ofas the position of a virtual camera that is capturing the map view.

Through gestural inputs, the mapping application allows a user to alsorotate a 2D or 3D map in some embodiments. The mapping application insome embodiments is a vector mapping application that allows for directmanipulations (such as rotation and 2D/3D manipulations) of the mapwhile browsing. However, some of the effects to the map can bedisorienting. Without an easy way to get back to north-up orientation(i.e., an orientation where the north direction is aligned with the topof the device), some user's may have difficulty interacting with the mapviews. To solve this, the mapping application of some embodimentsprovides an unobtrusive floating compass control on the map that servesboth as an indicator that points to north and as a button to restore anorth-up orientation. To further minimize clutter on the map, themapping application only shows the button only in a limited number ofsituations (such as when the map is rotated, etc.).

In order to minimize the number of on-screen controls, certain lessfrequently used actions are placed in a secondary UI screen behind a“page curl” that is displayed on a map view that is provided by theapplication. In some embodiments, the page curl is permanently displayedon at least some of the map views that the application provides. Forinstance, in some embodiments, the application displays the page curlpermanently on the initial map view that it provides for allowing a userto browse or search a location or to identify a route. The page curl isa selectable UI item that (1) indicates the location of another set ofcontrols that are conceptually “behind” the current view, and (2) whenselected, directs the application to present an animation that “peels”off the current view to display another view that shows the other set ofcontrols. The use of the page curl allows the application to displaymore of the map while offering an unobtrusive way to access furtherfunctionality that is provided by the other set of controls.Additionally, in some embodiments, the application does not use the pagecurl in map views where the additional functionality is deemed to beinappropriate to the task at hand. For instance, in some embodiments,the application does not display this page curl while presenting the mapview that is used during navigation.

The search field of the mapping application in some embodiments isanother UI tool that the application employs to make the transitionbetween the different modalities seamless. In some embodiments, a usercan initiate a search by tapping in the search field. This directs theapplication to present an animation that (1) presents an on-screenkeyboard and (2) opens a search table full of invaluable completions.This table has some important subtleties. When the search field istapped and before the terms are edited, or when the search field isempty, the table contains a list of “recents,” which in some embodimentsare recent searches and route directions that the user has requested.This makes it very easy to quickly bring up recently accessed results.

After any edit in the search field, the table is filled with searchcompletions both from local sources (e.g., bookmarks, contacts, recentsearches, recent route directions, etc.) and remote servers. Someembodiments, however, include recent route directions only when the userhas not yet entered any text into the search field. Once text isentered, the mapping application removes recent route directions fromthe search completions table. The incorporation of the user's contactcard into the search interface adds additional flexibility to thedesign. When showing recents, a route from current location to theuser's home is always offered in some embodiments, while it is offeredin the contexts that are deemed to be “appropriate” in otherembodiments. Also, when the search term is a prefix of an address label(e.g., ‘Wo’ for ‘Work’), the application presents the user's labeledaddress as a completion in the search table in some embodiments.Together these behaviors make the search UI a very powerful way to getresults onto a map from a variety of sources. In addition to allowing auser to initiate a search, the presence of the text field in the primarymap view in some embodiments also allows users to see the querycorresponding to search results on the map and to remove those searchresults by clearing the query.

Another way that the mapping application tightly integrates the searchand route identification experience is by providing several differentways to get directions. As mentioned above, the search table providesquick access to recently used routes. For any location selected on themap view, the mapping application in some embodiments also presents aninfo display banner (e.g., a window) that displays a quick-routenavigation UI control (e.g., button) that fetches a route (e.g., adriving route) from the current location to that pin without everleaving the map view. In addition, the mapping application also providesa selectable direction UI control (e.g., button) on the main map view(e.g., in the top left corner), which when selected presents a modaldirections editing interface that enables the user to request morecustomized routes, such as routes that do not begin from the currentlocation or a walking route instead of just driving routes. In someembodiments, the mapping application provides several differentselectable routes based on a route query that it receives through thedirection UI control. In such embodiments, the user can then select oneof the routes. In some embodiments, one of the routes is presented as adefault selected route, and the user can change the selected route to beone of the other presented routed. It should be noted that while neitherthe route history entries in the search field nor quick-route navigationcontrol perform actions that cannot be achieved with the direction item,they serve as important accelerators that make it much easier to obtainthe most commonly desired routes.

Once route directions have been obtained, they remain present until theyare explicitly cleared. This enables the mapping application to enter amode that is optimized for navigation. The navigation mode has manynovel features. One novel feature is that at any time while navigating,the user can move between a full-screen mode that presents a displayview optimized for turn-by-turn directions and an overview mode thatpresents a display view of the remaining route that better accommodatebrowsing. Some embodiments also allow for a search to be performed whilenavigating in the overview mode. For instance, some embodiments providea pull down handle that allows the search field to be pulled into theoverview display. Alternatively, or conjunctively, some embodimentsallow for searches to be performed during navigation through avoice-recognition input of the device of some embodiments.

Continuity between the overview mode and the full-screen mode isachieved by an in-place transition in the map and a constant set ofcontrols. To enter full-screen mode, the application in some embodiments(1) automatically hides the floating controls and a bar (containing UIcontrols) along the top, (2) completely uncurls the map. During thefull-screen mode, the application restricts touch interaction with themap. In some embodiments, a tap is required to access the controls thatwere automatically hidden, and even then they are adapted towards afull-screen navigation look, with a prominent display of the ETA in thebar along the top.

Another novel feature is that at any time while navigating, it is alwayseasy to stop navigation in both overview and full-screen modes byselecting a control to end navigation. Another novel feature is that atany time while navigating, the user can modify the turn-by-turnnavigation view to present alternative three-dimensional (3D) views orto present even a two-dimensional (2D) view. In some embodiments, the 3Dturn-by-turn navigation is an animated rendering of navigated route thatis rendered from the vantage point of a virtual camera that traversesalong the direction of the route based on the traversal direction andspeed of the user, which in some embodiments is captured by directionaldata (e.g., GPS data, triangulated cell-tower data, etc.) associatedwith the device.

While navigating, the mapping application of some embodiments allows auser to change the position of the virtual camera (i.e., the positionfrom which the navigated route is rendered) through gestural input onthe device's screen. Movement of the virtual camera (i.e., movement ofthe position from which the route is rendered) allows the mappingapplication to present alternative 3D view. Some embodiments even usethe virtual camera to render a top-down 2D view for the turn-by-turnnavigation, while other embodiments render the top-down 2D view byzooming in and out of a 2D map. In some embodiments, the mappingapplication presents a 3D button that serves both as 3D indicator and 3Dinitiator/toggle.

Different embodiments provide different gestural inputs to adjust the3D/2D view during turn-by-turn navigation. In some embodiments, thegestural input is a two-finger pinching/spreading operation to adjustthe zoom level. This adjustment of the zoom level inherently adjusts theposition and rotation of the camera with respect to the route direction,and thereby changes the 3D perspective view of the route direction.Alternatively, other embodiments provide other gestural inputs (e.g., afinger drag operation) that change the position of the camera instead ofor in addition to the zoom operation. In yet other embodiments, agestural input (e.g., a finger drag operation) momentarily changes theviewing direction of the camera to allow a user to momentarily glance toa side of the navigated route. In these embodiments, the applicationreturns the camera to its previous view along the route after a shorttime period.

Another novel feature of the mapping application are therealistic-looking road signs that are used during navigation and duringthe browsing of an identified route. In some embodiments, the signs aretextured images that bear a strong resemblance to actual highway signs,and they include instructional arrows, text, shields, and distance. Themapping application of some embodiments presents a wide number ofvariants in a large number of different contexts. For maneuvers that areclose together, a secondary sign is presented hanging just beneath theprimary sign. Signs are presented in different colors according to theregional norms in some embodiments. Also, as one maneuver is passedduring navigation, the mapping application animates the sign away with amotion that mimics a sign passing overhead on the highway. When amaneuver is approached, the mapping application draws attention to thesign with a subtle animation (e.g., a shimmer across the entire sign).

As mentioned above, the mapping application of some embodiments uses therealistic-looking road signs to provide a novel method of browsing aroute that it has identified. For instance, in some embodiments, themapping application allows a user to select and scroll through the signsof the junctures along an identified route when it presents theidentified route to the user. As the user scrolls through each sign, theportion of the route associated with the currently in-focus sign ispresented or highlighted (e.g., through color highlighting or throughanother geometry (e.g., a circle or other marker) marking the portion).Alternatively, or conjunctively, the user can scroll through each signby selecting different junctures of the route in order to view the signassociated with that juncture. Some of these embodiments provide thisinteraction only for routes that are not defined between a user'scurrent location and a destination. In other words, these embodiments donot provide this browsing experience when a route is presented thatconnects the user's current location to a destination. Otherembodiments, however, provide the route browsing experience through theroad signs in other or all other contexts in which a route is displayed.

In some embodiments, the mapping application provides a feature thatenables integration with other routing applications available on or forthe device. When a user to specifies start and ends locations andenables the feature when requesting route directions, the mappingapplication provides the user with a list of relevant third-partyrouting applications. In some embodiments, the mapping applicationdisplays the relevant routing applications in two sections—a section forrelevant routing applications that are installed on the device andanother section for relevant routing applications that are available butnot yet installed on the device. The user may then select one of theinstalled routing applications to provide route directions or select anavailable routing application to install and then provide routedirections.

The above-described features as well as some other features of themapping application of some embodiments are further described below. Inthe description above and below, many of the features are described aspart of an integrated mapping application that provides novel locationbrowsing, locating searching, route identifying and route navigatingoperations. However, one of ordinary skill will realize that these noveloperations are performed in other embodiments by applications that donot perform all of these operations, or perform other operations inaddition to these operations.

Several more detailed embodiments of the invention are described in thesections below. Section I provides a conceptual description of a mapbrowsing feature of the mapping application of some embodiments. Next,Section II conceptually describes a location search feature of themapping application of some embodiments. Section III follows this with adescription of generating routes according to some embodiments of theinvention. Next, Section IV describes a routing application feature ofthe mapping application of some embodiments. Section V provides adescription of several electronic systems that implement someembodiments of the invention. Finally, Section VI describes a mapservice environment in which the mapping application of some embodimentsoperates.

I. Map Browsing

Some embodiments of the invention provide an integrated mappingapplication that includes several useful modalities, including locationbrowsing, map searching, route identifying and route navigatingoperations. The mapping application in some embodiment is defined to beexecuted by a device that has a touch-sensitive screen that displays theoutput of the application. In some embodiments, this device has amulti-touch interface for allowing a user to provide touch and gesturalinputs through the screen to interact with the application. Examples ofsuch devices are smartphones (e.g., iPhone® sold by Apple Inc., phonesoperating the Android® operating system, phones operating the Windows 8®operating system, etc.).

A. General Controls

FIG. 1 illustrates an example of a device 100 that executes anintegrated mapping application of some embodiments of the invention.This application has a novel user interface (UI) design that seamlesslyand cohesively integrates the controls for each of its differentmodalities by using a minimum set of on-screen controls that floats ontop of the content in order to display as much of the content aspossible. Additionally, this cluster adapts to the task at hand,adjusting its contents in an animated fashion when a user moves betweenthe different modalities (e.g., between browsing, searching, routing andnavigating). This common element with an adaptive nature enables themapping application to optimize for different tasks while maintaining aconsistent look and interaction model while moving between those tasks.

FIG. 1 shows three stages 105, 110, and 115 of interaction with themapping application. The first stage 105 shows device's UI 120, whichincludes several icons of several applications in a dock area 125 and ona page of the UI. One of the icons on this page is the icon for themapping application 130. The first stage shows a user's selection of themapping application through touch contact with the device's screen atthe location of this application on the screen.

The second stage 110 shows the device after the mapping application hasopened. As shown in this stage, the mapping application's UI has astarting page that in some embodiments (1) displays a map of the currentlocation of the device, and (2) several UI controls arranged in a topbar 140, and as floating controls. As shown in FIG. 1, the floatingcontrols include a position control 145, a 3D control 150, and a pagecurl control 155, while the top bar 140 includes a direction control160, a search field 165, and a bookmark control 170.

The direction control 160 opens a page through which a user can requesta route to be identified between a starting location and an endinglocation. As further described below, this control is one of threemechanisms through which the mapping application can be directed toidentify and display a route between two locations; the two othermechanisms are (1) a control in an information banner that is displayedfor a selected item in the map, and (2) recent routes identified by thedevice that are displayed in the search field 165. Accordingly, theinformation banner control and the search field 165 are two UI toolsthat the application employs to make the transition between thedifferent modalities seamless.

In some embodiments, a user can initiate a search by tapping in thesearch field 165. This directs the application to present an animationthat (1) presents an on-screen keyboard and (2) opens a search tablefull of invaluable completions. This table has some importantsubtleties. When the search field is tapped and before the terms areedited, or when the search field is empty, the table contains a list of“recents,” which in some embodiments are recent searches and routedirections that the user has requested. This makes it very easy toquickly bring up recently accessed results.

After any edit in the search field, the table is filled with searchcompletions both from local sources (e.g., bookmarks, contacts, recentsearches, recent route directions, etc.) and remote servers. Someembodiments, however, include recent route directions only when the userhas not yet entered any text into the search field. Once text isentered, the mapping application removes recent route directions fromthe search completions table. The incorporation of the user's contactcard into the search interface adds additional flexibility to thedesign. When showing recents, a route from current location to theuser's home is always offered in some embodiments, while it is offeredin the contexts that are deemed to be “appropriate” in otherembodiments. Also, when the search term matches at least part of anaddress label (e.g., ‘ork’ for ‘Work’), the application presents theuser's labeled address as a completion in the search table in someembodiments. Together these behaviors make the search UI a very powerfulway to get results onto a map from a variety of sources. In addition toallowing a user to initiate a search, the presence of the text field inthe primary map view in some embodiments also allows users to see thequery corresponding to search results on the map and to remove thosesearch results by clearing the query.

The bookmark control 170 (e.g., button) allows location and routes to bebookmarked by the application. The position control 145 allows thecurrent position of the device to be specifically noted on the map. Oncethis position control is selected, the application maintains the currentposition of the device in the center of the map as the device is movingin some embodiments. In some embodiments, it can also identify thedirection to which the device currently points. The mapping applicationof some embodiments identifies the location of the device using thecoordinates (e.g., longitudinal, altitudinal, and latitudinalcoordinates) in the GPS signal that the device receives at the locationof the device. Alternatively or conjunctively, the mapping applicationuses other methods (e.g., cell tower triangulation) to compute thecurrent location.

The 3D control 150 is a control for viewing map or inspecting a route inthree dimensions (3D). The mapping application provides the 3D controlas a quick mechanism of getting into and out of 3D. This control alsoserves as (1) an indicator that the current view is a 3D view, and (2)an indicator that a 3D perspective is available for a given map view(e.g., a map view that is zoomed out might not have a 3D viewavailable). In some embodiments, the 3D control 150 provides at leastthree different appearances corresponding to some of these indications.For instance, the 3D control gets colored grey when the 3D view of themap is unavailable, black when the 3D view is available but the map isin the 2D view, and blue when the map is in the 3D view. In someembodiments, the 3D control has a fourth appearance (e.g., a buttonshowing a building image or shape) when the immersive 3D mappresentation is available at a given zoom level. Immersive andnon-immersive 3D presentations are described further in U.S. patentapplication Ser. No. 13/632,036, entitled “3D Map Views for 3D Maps,”which is filed on Sep. 30, 2012. U.S. patent application Ser. No.13/632,036, entitled “3D Map Views for 3D Maps,” is incorporated hereinby reference.

The page curl control 155 is a control that allows the application tominimize the number of on-screen controls, by placing certain lessfrequently used actions in a secondary UI screen, which is accessiblethrough the “page curl” control displayed on the map. In someembodiments, the page curl is permanently displayed on at least some ofthe map views that the application provides. For instance, in someembodiments, the application displays the page curl permanently on thestarting page (illustrated in second stage 110) that it provides forallowing a user to browse or search a location or to identify a route.

The page curl indicates the location of another set of controls that areconceptually “behind” the current view. When the page curl control 155is selected, the application present an animation that “peels” off thecurrent view to display another view that shows the other set ofcontrols. The third stage 115 illustrates an example of such ananimation. As shown by this stage, the “peeling” of the starting pagereveals several controls, which in this example are the drop pin, print,show traffic, list, standard, satellite, and hybrid controls. In someembodiments, these controls perform the same operations as similarcontrols do in currently available smartphones, such as iPhonesoperating iOS®.

The use of the page curl allows the application to display more of themap while offering an unobtrusive way to access further functionalitythat is provided by the other set of controls. Additionally, in someembodiments, the application does not use the page curl in map viewswhere the additional functionality is deemed to be inappropriate to thetask at hand. For instance, in some embodiments, the application doesnot display this page curl while presenting the map view duringnavigation.

Also, the third stage 115 illustrates that the user drags a corner or anedge of the page to peel off the page in some embodiments. However, inother embodiments, the animation that peels off the page is displayed bysimply tapping the page curl control 155 without dragging the corner orthe edge.

B. Adaptive Button Cluster

As mentioned above, the mapping application in some embodimentsadaptively adds and removes controls to the floating control cluster setin order to adapt this cluster to the different tasks while maintaininga consistent look and interaction model between those tasks. FIG. 2illustrates an example of the application adaptively modifying thefloating control cluster to add and remove a list view control 235. Thisexample is provided in the context of using the direction indicator 160to obtain a route between two locations.

This example is also provided in terms of six stages 205-230 ofinteractions with the mapping application. The first stage 205illustrates the selection of the direction indicator 160. The secondstage 210 next illustrates the selection of a route generation control240 after the user has entered starting and ending locations for theroute in the starting and ending fields 245 and 250. The second stage210 also shows that the mapping application is displaying severalrecently used route generation requests below the fields for enteringthe starting and ending locations.

The third stage 215 shows two routes 260 and 261 that the mappingapplication has identified for the provided starting and endinglocations. In some embodiments, the mapping application highlights oneof the routes to indicate that the highlighted route is a default routethat the mapping application recommends. This stage also illustrate thestart of an animation that shows the list view control 235 sliding outfrom under the 3D icon 150. When there are opportunities to display alist of items, be it a list of instructions in a route or a list ofsearch results when multiple results are found for a given query, themapping application of some embodiments displays a list control as oneof the floating controls. Tapping the list control brings up a modallist view in some embodiments. Having a modal list view keeps themapping application simple and the map front and center. In someembodiments, the list view itself is adapted and optimized for the typeof list being displayed, in that search results will be displayed withstar ratings when available and route steps will include instructionalarrows.

The fourth stage 220 shows the selection of a clear control 255 to clearthe identified routes 260 and 261 from the illustrated map. In responseto this selection, the routes 260 and 261 are removed from the map andan animation starts to show the list control 235 sliding back under the3D control 150, as illustrated in the fifth stage 225. The sixth stage1230 shows the application UI after the animation has ended and the listcontrol has been removed from the floating control set.

Another floating control that the mapping application of someembodiments employs is a compass. FIG. 3 illustrates an example of theapplication adaptively modifying the floating control cluster to add andremove a compass 300. This example is provided in the context of usingthe position control 145 to view the current position and orientation ofthe device on the map presented by the device. In some embodiments, theposition control 145 can cause the mapping application to operate inthree different states. For instance, when the position control 145 isnot selected, the mapping application displays a map view. Uponreceiving a first selection of the position control 145, the mappingapplication shifts the map to display a region of the map that includesthe current location of the device in the center of the region. Themapping application of some embodiments, from then on, tracks thecurrent location of the device as the device moves.

In some embodiments, the mapping application maintains the currentlocation indicator in the center of the display area and shifts the mapfrom one region to another as the device moves from one region toanother region. Upon receiving a second selection of the positioncontrol 145 while the mapping application is maintaining the currentlocation of the device in the center of the displayed region, themapping application displays a simulated light projection in the mapfrom the identified current position in the direction that the devicecurrently faces. When the position control 145 is selected again whilethe mapping application is displaying a simulated light projection, themapping application returns back to the state that was before receivingthe first selection. That is, the projection will disappear and thecurrent position of the device is not tracked.

The example illustrated in this figure is provided in terms of fivestages 305-325 of interactions with the mapping application. The firststage 305 illustrates that the mapping application is displaying a mapregion that happens to not include the current location of the device(i.e., the current location indicator is not displayed in the mapregion).

The second stage 310 illustrates the position control 145 being selectedonce. As mentioned above, the first selection of the position control145 will result in shifting the map to display a map region that has thecurrent location indicator 326 in the center. The third stage 315 showsthe result of selecting the position control 145. Some embodimentsidentify the device's current position by using the current locationindicator 326. The current location indicator 326 has differentappearances in different embodiments. For instance, the current locationindicator 326 of some embodiments has appearance of a colored dot (e.g.,a blue dot) on the map. Identification of the current position is usefulwhen the user has explored (e.g., through gestural swipe operation) thedisplayed map such that the device is not currently displaying theuser's current location on the map.

The fourth stage 320 illustrates the position control 145 being selectedagain. The second selection of the position control 145 in someembodiments will cause the application to display a simulated lightprojection 345 in the map from the identified current position 326 inthe direction that the device currently faces. This projection helps theuser identifies the direction that the device faces at any time. In someembodiments, this projection always points towards the top of the device(i.e., the location along which the search field 165 is positioned whilethe device is held in the portrait direction).

This projection 345 is illustrated in the fifth stage 310. This stagealso shows that in this mode, the mapping application presents afloating compass 300. This compass serves as an indicator that the usercan use to identify the direction to the North Pole. In someembodiments, this compass is in the shape of two isosceles trianglesthat abut at their bases, with one of the triangles pointing north (in adirection away from the abutting bases) and having a color (e.g.,orange) that differentiates it from the other triangle. As furtherdescribed below, the compass can also be use to restore a north-uporientation after the user has rotated a 2D or 3D view of the map. Insome embodiments, the compass may remain in the map view after themapping application receives another selection of the position control145. In some embodiments, the compass will not disappear until themapping application receives a user input to remove the compass (e.g.,selection of the compass).

The fifth stage 325 also shows that the map has rotated to maintain theprojection's direction to the top of the device. This is because thedevice has been facing a different direction than the direction to thetop of the device in the previous stage 320. As the direction of thedevice moves, so will the direction of the compass 300 with respect tothe top of the device. The compass has moved to indicate the device isfacing a northwest direction.

In some embodiments, the mapping application changes the appearance ofthe position control 145 once after the first selection and another timeafter the second selection. The fifth stage 325 shows the appearance ofthe position control 145 after the second selection, which is differentthan the appearance of the position control 145 after the firstselection.

C. 2D or 3D

The mapping application in some embodiments can display a location inthe map in either a 2D mode or a 3D mode. It also allows the user tobrowse a location in the map in either a 2D mode or a 3D mode. Asmentioned above, one of the floating controls is the 3D control 150 thatallows a user to view a map or inspect a route in three dimensions (3D).This control also serves as (1) an indicator that the current view is a3D view, and (2) an indicator that a 3D perspective is available for agiven map view (e.g., a map view that is zoomed out might not have a 3Dview available).

FIG. 4 illustrates how the mapping application of some embodimentsprovides the 3D control 150 as a quick mechanism of entering a 3D modefor viewing a map location in three dimensions. This figure illustratesthis operation in four stages 405-420. The first stage 405 illustratesthe user selecting the 3D control 150 while viewing a two-dimensionalpresentation of an area about the user's current location 425. The topbar, the floating controls, and the page curl are not depicted in thisfigure for simplicity of description.

The second stage 410 shows a three dimensional presentation of theuser's current location on the map. As mentioned above, the mappingapplication generates the 3D view of the map in some embodiments byrendering the map view from a particular position in the threedimensional scene that can be conceptually thought of as the position ofa virtual camera that is capturing the map view.

The third stage 415 shows the user browsing about the current locationby performing a swipe operation (e.g., by dragging a finger across thetouch-sensitive screen of the device). This swipe operation changes the3D map view presented on the device to display a new location on the 3Dmap. This new location is illustrated in the fourth stage 420.

In some embodiments, the mapping application presents the 3D view of themap while the mapping application is operating in a navigation mode(i.e., while the mapping application is presenting turn-by-turnnavigation view). In order to provide visual distinction between the 3Dview of the map during navigation and the 3D view of the map during mapbrowsing, the mapping application of some embodiments use differentstylesheets that define rendered graphics differently. For instance, themapping application of some embodiments uses a stylesheet that definesgrey colors for buildings, white colors for roads, and rounded cornersfor blocks in the 3D view of the map during map browsing. The mappingapplication of some embodiment uses a stylesheet that defines whitecolors for buildings, grey colors for roads, and sharp corners forblocks in the 3D view of the map during navigation. In some embodiments,the mapping application applies these stylesheets to the same map tilesfor a given region of the map. In other embodiments, the mappingapplication applies these stylesheets to different map tiles (e.g., maptiles, navigation tiles, etc.) for the given region. Using stylesheetsto render maps are further described in U.S. patent application Ser. No.13/632,035, entitled “Rendering Maps,” which is filed on Sep. 30, 2012.U.S. patent application Ser. No. 13/632,035, entitled “Rendering Maps,”is incorporated herein by reference.

I. Location Search

The search field of the mapping application in some embodiments isanother UI tool that the application employs to make the transitionbetween the different modalities seamless. In some embodiments, a usercan initiate a search by tapping in the search field. This directs theapplication to present an animation that (1) presents an on-screenkeyboard and (2) opens a search table full of invaluable completions.This table has some important subtleties. When the search field istapped and before the terms are edited, or when the search field isempty, the table contains a list of “recents,” which in some embodimentsare recent searches and route directions that the user has requested.This makes it very easy to quickly bring up recently accessed results.

After any edit in the search field, the table is filled with searchcompletions both from local sources (e.g., bookmarks, contacts, recentsearches, recent route directions, etc.) and remote server suggestions.The incorporation of the user's contact card into the search interfaceadds additional flexibility to the design. When showing recents, a routefrom current location to the user's home is always offered in someembodiments, while it is offered in the contexts that are deemed to be“appropriate” in other embodiments. Also, when the search term is aprefix of an address label (e.g., ‘Wo’ for ‘Work’), the applicationpresents the user's labeled address as a completion in the search tablein some embodiments. Together these behaviors make the search UI a verypowerful way to get results onto a map from a variety of sources. Inaddition to allowing a user to initiate a search, the presence of thesearch field in the primary map view in some embodiments also allowsusers to see the query corresponding to search results on the map and toremove those search results by clearing the query.

As described above, when the search field is initially tapped and beforeany search terms are provided or edited, or when the search field isempty, the search table displays a list of recent searched terms andsearched route directions. FIG. 5 illustrates four stages 505-520 of auser's interaction with the application running on a user's device inorder to display the search table with a list of the user's recentsearches and recent route directions.

The first stage 505 shows the device after the mapping application hasopened. As mentioned above, the mapping application's UI has a startingpage that in some embodiments (1) displays a map of the current locationof the device, and (2) several UI controls arranged in the top bar 140and as floating controls. In the first stage 505, the user taps thesearch field 165, which is currently empty. The top bar 140 includes thedirection control 160 and the bookmark control 170.

The second stage 510 illustrates the application displaying a searchtable 540 after receiving the user's tapping of the search field. Thissearch table is displayed regardless of whether or not the user providesany search terms in the search field. The search table 540 provides alist of suggested search completions, including recently searched termsand route directions. In particular, the search table indicates that theuser recently searched for “John Smith” and “Pizzeria.” Each of thesearch completions listed in the search table also indicates certainother useful information. For instance, an icon 545 displayed next to“John Smith” indicates that this person is included in a contact list onthe user's device and “Pizzeria” is currently saved as a bookmark, asindicated by a bookmark icon 550.

The search table also lists the user's recent route directions, whichincludes directions to “Royal Burgers” illustrated at the bottom of thesearch table 540. Also, the search table 540 lists an option to obtaindirections from the user's current location to their home address, whichis illustrated as the first item of the search table 540. When showingrecents, a route from current location to the user's home is alwaysoffered in some embodiments. Moreover, the mapping application of someembodiments displays recent route directions only when the search fieldis empty. That is, once the user starts typing in a search query, themapping application does not include recent route directions in the listof suggested search completions.

The second stage 510 also illustrates that the mapping application ofsome embodiments removes the direction control 160 and the bookmarkcontrol 170 from the top bar 140. The mapping application inserts acancel control 555 for canceling out of the search table 540 and goingback to the map view shown in the previous stage 505.

The third stage 515 illustrates the user's selection of the directionsto “Home” option, listed as the first item in the search table. Byproviding some of the most frequently requested user searches anddirection requests at the top of the search table, including a directionto home option, the application provides a user the ability to quicklyobtain information for their most common requests without having toextensively navigate the application to receive these results.

The fourth stage 520 illustrates the mapping application displaying aroute corresponding to directions from the user's current location totheir home. The mapping application of some embodiments also removes thesearch field 165 and the cancel control 555 from the top bar 140 andplaces the clear control 255 and a start control 560. The start control560 in some embodiments is for starting the navigation according to theselected route. In some embodiments, the mapping application centers thecurrent location indicator in the display area so that the route fromthe current location is displayed from the center of the display area.

A user may also provide a search query in the search field. When theuser enters a full search term in the search field, the mappingapplication of some embodiments provides a list of items that match orinclude the search term that has been typed in the search field so far.For each particular search, the user has the option to select from thelist of items displayed in the search table or the user may select a“search” button on the keyboard to execute a full search of the searchterm as it relates to the map and the user's current location.

III. Route Generation

As mentioned above, the mapping application tightly integrates thesearch and route identification experience by providing severaldifferent ways to get directions. One such way is through a selectabledirection UI control (e.g., button) on the main map view (e.g., in thetop left corner), which when selected presents a modal interface forediting directions and that enables the user to request more customizedroutes, such as routes that do not begin from the current location or awalking route instead of just driving routes.

In some embodiments, the mapping application allows the user to inspectthese customized routes by sliding the signs showing maneuverinstructions in and out of the UI page showing a route. This mode ofoperation of the mapping application is referred to as a routeinspection mode or (manual) stepping mode, which is one of several modesof operation in which the mapping application of some embodiments iscapable of operating. Examples of these operational modes include anavigation mode, a map browsing mode, and the route inspection mode.

A juncture is where two or more road segments meet. A route is a pathbetween a starting location and a destination location in the map. Atypical route has zero or many junctures along the path between the twolocations. A maneuver instruction for a juncture in the route identifiesthe direction of the road segment to advance from the juncture. In someembodiments, the mapping application provides the user with a maneuverinstruction only for some of the junctures along the route because theuser may not need to perform a maneuver at every juncture in the routein order to reach the destination location. For instance, the usercarrying the device may recognize that the user only needs to gostraight by passing through several junctures until the user reaches ajuncture at which to make a turn to get to the destination location. Inthis patent application, when a juncture has a maneuver instruction todisplay, that maneuver instruction is referred to as a “step.”

In the navigation mode, the mapping application of some embodimentsprovides the user with a set of steps for a route between the device'scurrent location to a destination location. Typically, the mappingapplication provides the user with these steps visually and audibly inthe navigation mode. When the user carrying the device deviates from theroute, the mapping application of some embodiments tracks the locationof the device and re-calculates a new route from the deviated locationin order to re-direct the user to the destination location from thedeviated location. In other words, the mapping application of someembodiments operating in the navigation mode requires the device to beon a route at all times. Also, the mapping application of someembodiments operating in the navigation mode displays the steps by“popping up” the step rather than sliding the steps in and out of thedisplay area. Furthermore, the information in the step (i.e., themaneuver instruction) that the mapping application displays whileoperating in the navigation mode is dynamic in some embodiments. Thatis, information such as estimated time of arrival, remaining time of thetrip to the destination location, remaining distance from the currentlocation of the device to the destination location or the next juncturewith next step, etc. get updated by the mapping application as thedevice is moving along the route.

In the route inspection mode, the mapping application of someembodiments allows the user to slide the steps in and out of the displayarea to inspect each step in the route. Alternatively, the mappingapplication allows the user to manipulate the map (e.g., by zooming inand out, sliding the map in different directions) to display differentjunctures in the route. When a juncture with a step is displayed in thedisplay area as a result of the user's manipulation of the map, themapping application displays the step by sliding in the step (andsliding in and out any intermediate steps between the previouslydisplayed step and the currently displayed step). In this manner, theuser can inspect the route by manually sliding the steps in and out ofthe display area or by manipulating the map to display certain juncturesof the route in the display area.

FIG. 6 illustrates an example in terms of four stages 605-620 of auser's interaction with the mapping application to obtain routingdirections. Specifically, this figure illustrates that the mappingapplication starts to operate in the route inspection mode. The firststage 605 illustrates the device after the user has selected thedirection control 160 (not shown in this figure). The first stage 605also illustrates that the user has entered starting and ending locationsfor the route in the starting and ending fields 245 and 250.

The second stage 610 illustrates the selection of the route generationcontrol 240. In some embodiments, when the route generation control isselected, the mapping application sends the starting and endinglocations information to a remote server to obtain the routes. The thirdstage 615 shows two routes, route 1 and route 2 which the mappingapplication renders on the map based on the route information obtainedfrom the remote server in some embodiments. The third stage 615 alsoillustrates that the mapping application has selected route 1 bydefault. The user selects the start control 650 for starting thenavigation according to the selected route. The mapping application ofsome embodiments starts to operate in the route inspection mode uponreceiving a selection of the start control 650.

The fourth stage 620 illustrates that the mapping application displaysan instruction sign 630, which in some embodiments is the first sign ofa series of turn-by-turn instruction signs (not all of them shown in thefigure) for browsing the selected route. The mapping application allowsthe user to browse the selected route by sliding the signs along aparticular axis (e.g., horizontally). These scrollable instruction signsare described in detail further below. In some embodiments, the mappingapplication allows the user to browse the selected route when thestarting location of the selected route is not the user's currentlocation. Also, the mapping application of some embodiments disables ordoes not display the page curl when the mapping application is in thismode for allowing the user to browse or inspect a selected route asshown in this stage 620.

In addition to entering starting and ending locations for the route inthe starting and ending fields 245 and 250, the mapping application ofsome embodiments allows the user to select a route from a list ofpreviously searched routes. FIG. 7 illustrates an example in terms offour stages 705-720 of a user's interaction with the mapping applicationto obtain routing directions. This example is provided in the context ofusing the direction control 160 to obtain a route between two locations.

The first stage 705 illustrates the mapping application displaying a mapof a street view of a city. The user is initiating a tap of thedirection control 160 located at the top left corner of the display nextto the search field 165. The second stage 710 next illustrates that theapplication presents a search table 755 with a list of recent routedirections that the user has previously searched. In this example, theuser selects a route to a police station as shown.

The third stage 715 illustrates the display of a map with the selectedroute between the device's current location to the destination for theselected route. This stage 715 also illustrates the selection of thelist view control 235. The fourth stage 720 illustrates that the mappingapplication presents a list of turn-by-turn instructions to get to thedestination. As shown, each instruction in the list includes a directionicon 735 that shows the directions for the particular turn associatedwith the instruction. In some embodiments, each instruction in the listlooks identical to a corresponding instruction sign 635 described aboveby reference to FIG. 6.

The figures described above illustrate various features and operationsof a mapping application in some embodiments. Additional details ofmapping applications are described in U.S. patent application Ser. No.13/632,102, entitled “Problem Reporting in Maps,” which is filed on Sep.30, 2012; and U.S. patent application Ser. No. 13/632,121, entitled“Context-Aware Voice Guidance,” which is filed on Sep. 30, 2012. U.S.patent application Ser. No. 13/632,102, entitled “Problem Reporting inMaps,” and U.S. patent application Ser. No. 13/632,121, entitled“Context-Aware Voice Guidance,” are incorporated herein by reference.

IV. Routing Applications

The above section describes various different ways to get directionsprovided by the mapping application. In some embodiments, the mappingapplication provides a feature that tightly integrates the mappingapplication with other third-party routing applications. This sectionwill describe several examples and embodiments of such a feature.

FIG. 8 conceptually illustrates an example of graphical user interface(GUI) 800 of a mapping application of some embodiments that provides athird-party routing application feature. Specifically, FIG. 8illustrates the GUI 800 at four different stage 805-820 of invoking thethird-party routing application feature and selecting a third-partyrouting application.

The first stage 805 shows the GUI 800 displaying the location browsinginterface of the mapping application. Additionally, the GUI 800illustrates that a user is invoking the directions editing interface ofthe mapping application. As shown in the first stage 805, the user isselecting a selectable UI item 825 by tapping on the UI item 825 with afinger in order to invoke the directions editing interface. When themapping application receives the selection of the UI item 825, themapping application transitions to displaying the directions editinginterface.

The second stage 810 illustrates the GUI 800 displaying the directionsediting interface after the directions editing interface has beeninvoked. This stage also illustrates that the user has enabled athird-party routing application mode of the directions editinginterface. In this example, the user enabled the third-party routingapplication mode by tapping on the selectable UI item 830 with a fingerto select the UI item 830. When the mapping application receives theselection of the UI item 830, the mapping application displays ahighlighting of the UI item 830 to indicate that the third-party routingapplication mode has been enabled. In this example, the user hasspecified the user's current location as the start location of routedirections and “789 Center St.” as the end location of the routedirections.

In addition, the second stage 810 shows that the user is invoking thethird-party routing application feature of the mapping application. Asshown, the user is selecting the selectable UI item 835 by tapping onthe UI item 835 with a finger in order to invoke the third-party routingapplication feature. When the mapping application receives the selectionof the UI item 835 with the UI item 830 enabled, the mapping applicationtransitions to displaying a third-party routing application interface.

In the third stage 815 shows the GUI 800 after the invocation of thethird-party routing application feature of the mapping application. Asillustrated, the GUI 800 in the third stage 815 is displaying thethird-party routing application interface. The third-party routingapplication interface includes a section (the upper section in thisexample) for displaying a list of routing applications that are alreadyinstalled on the device on which the mapping application is executingand another section (the lower section in this example) for displaying alist of routing applications that are available for installation on thedevice.

As shown in the third stage 815, the upper section of the third-partyrouting application interface is displaying graphic representations 840and 842 of third-party routing applications that are already installedon the device. Each graphic representation includes an icon associatedwith a corresponding application, a description of the type ofapplication (e.g., a train application, a bicycle application, a taxiapplication, a hiking trail application, etc.), the name of theapplication, and a selectable UI item (e.g., a Route button) forlaunching the application to provide route directions.

In addition, the application that corresponds to each of the graphicrepresentations 840 and 842 is capable of providing route directionsbetween the start and end locations specified in the second stage 810.In some embodiments, each of these applications is associated with acoverage file that specifies a geographic area in which the applicationis relevant. When the mapping application receives the invocation of thethird-party routing application, the mapping application (1) identifiesinstalled third-party routing applications with coverage files thatspecify geographical areas within which the start and end locationsspecified in the directions editing interface are included and (2)displays the identified, installed applications. Alternatively, themapping application of some embodiments also identifies installedrouting applications with coverage files that specify geographical areaswithin which one of the locations is included. In some such embodiments,the mapping application only identifies installed routing applicationswith coverage files that specify geographical areas (1) within which oneof the locations is included and (2) from which the other location iswithin a defined distance.

In some embodiments, the mapping application ranks the identified,installed third-party routing application based on a set of factors anddisplays the applications in the ranked order. Examples of factors thatmay be considered include the popularity of the application (e.g., thenumber of downloads, ratings, rating score, etc.), the frequency inwhich local and/or remote users send route directions to theapplication, the size of the geographic area specified by theapplication's coverage file (e.g., large areas ranked lower), thedistance of the current location of the user with respect to thegeographic area specified by the application's coverage file, the userrating of the application, etc. In order to facilitate maintaining thefrequency in which users send route directions to the application, themapping application of some embodiments automatically sends data to acentralized location (e.g., a dedicated set of computing devices, one ofthe defined applications sources, etc.) for storage and processing.

At the third stage 815, the lower section of the third-party routingapplication interface is displaying graphic representations 844-848 ofthird-party routing applications that are available for installation onthe device. Each graphic representation includes an icon associated witha corresponding application, a description of the type of application,the name of the application, a user rating of the application, a priceto pay, if any, in order to install the application, and a selectable UIitem (e.g., a right arrow) for displaying a product page associated withthe application.

For this example, the application that corresponds to each of thegraphic representations 844-848 is capable of providing route directionsbetween the start and end locations specified in the second stage 810.In some embodiments, each of these applications is associated with acoverage file that specifies a geographic area in which the applicationis relevant. When the mapping application receives the invocation of thethird-party routing application, the mapping application sends a set ofrequests for third-party routing applications to a set of definedapplication sources. In some embodiments, the requests specify the startand end locations.

The set of application sources may be defined to include any number ofthird-party application providers and/or hosts (e.g., online applicationstores, application distribution platforms, digital distributionservices, etc.). In response to the mapping application's request, eachapplication source identifies applications available through theapplication source for installation on the device in a similar manner asthe mapping application, in some embodiments. That is, each applicationsource (1) identifies installed third-party routing applications withcoverage files that specify geographical areas within which the startand end locations specified in the directions editing interface areincluded and (2) displays the identified installed applications.Alternatively, each application source of some embodiments alsoidentifies installed routing applications with coverage files thatspecify geographical areas within which one of the locations isincluded. In some such embodiments, the application source onlyidentifies installed routing applications with coverage files thatspecify geographical areas (1) within which one of the locations isincluded and (2) from which the other location is within a defineddistance.

When the mapping application receives search results from the set ofapplication sources, the mapping application displays a list of thethird-party routing application that are available for installation onthe device. In some embodiments, the mapping application ranks thethird-party routing application based on a set of factors and displaysthe applications in the ranked order. Examples of factors that may beconsidered include the popularity of the application (e.g., the numberof downloads, ratings, rating score, etc.), the frequency in which localand/or remote users send route directions to the application, the sizeof the geographic area specified by the application's coverage file(e.g., large areas ranked lower), the distance of the current locationof the user with respect to the geographic area specified by theapplication's coverage file, the user rating of the application, etc. Inorder to facilitate maintaining the frequency in which users send routedirections to the application, the mapping application of someembodiments automatically sends data to a centralized location (e.g., adedicated set of computing devices, one of the defined applicationssources, etc.) for storage and processing.

In some embodiments, the mapping application manages its owndynamically-updated declaration of geographic coverage (e.g., ageographic region, a set of geographic points and/or locations, etc.).Based on the declaration of geographic coverage, the mapping applicationmaintains a set of installed routing applications and available but notinstalled applications on-the-fly (e.g., by using the techniquesdescribed above). In some embodiments, the declaration of geographiccoverage includes a portion or all of the geographic area that themapping application is displaying (e.g., while performing locationbrowsing, map searching, route identifying, and/or route navigatingoperations). This way, the mapping application can quickly provide alist of geographically relevant routing applications when the userinvokes the third-party routing application feature.

The thirds stage 815 of the GUI 800 also shows that the user isselecting an installed routing application to provide route directionsthrough the routing application. As illustrated, the user is selectingthe selectable UI item 850 by tapping on the UI item 850 with a fingerin order to launch the third-party routing application represented bythe graphic representation 840. Upon receiving the selection of the UIitem 850, the mapping application launches the Acme Transit applicationby sending route data to the application and transitioning to the AcmeTransit application. As indicate by the graphic representation 840, theAcme Transit routing application is for providing train routedirections. In some embodiments, the route data includes the startlocation and the end location specified in the directions editinginterface shown in the second stage 810. The route data of someembodiments includes additional and/or other information, such as namesassociated with the start and end locations, phone numbers associatewith the start and end locations, address book identifiers associatedwith the start and end locations that identify entries in an addressbook application installed on the device, etc.

The fourth stage 820 shows the GUI 800 after the Acme Transit routingapplication has processed the route data. At this stage 820, the AcmeTransit routing application is displaying a list of route directions totravel by train. For this example, the Acme Transit routing applicationused the route data (the start location and the end location in thisexample) to provide route directions from the user's current location to“789 Center St.” via train.

FIG. 9 conceptually illustrates an example of selecting and installing athird-party routing application according to some embodiments of theinvention. In particular, FIG. 9 illustrates the GUI 800 at differentfour different stages 905-920 of selecting and installing a third-partyrouting application.

The first stage 905 of the GUI 800 is similar to the third stage 815 ofthe GUI 800 described above by reference to FIG. 8 except the firststage 905 shows an available third-party routing application beingselected instead of an installed third-party routing application. Asshown in the first stage 905, the GUI 800 is displaying the third-partyrouting application interface. Here, the user is selecting a routingapplication that is not installed on the device but is available forinstallation. Specifically, the user is selecting a selectable UI item925 by tapping on the UI item 925 with a finger in order to transitionto a product page associated with a routing application (the Yellow Cabrouting application in this example) represented by the graphicrepresentation 844. When the mapping application receives the selectionof the UI item 925, the mapping application displays the product pageassociated with the Yellow Cab routing application. In some embodiments,the mapping application displays the product page by retrieving the pagefrom the application source that provides and/or hosts the routingapplication.

The second stage 910 illustrates the GUI 800 after the mappingapplication transitions to the Yellow Cab routing application's productpage. As shown, the product page includes a selectable UI item 930 fortransitioning back to the third-party routing application interfaceillustrated in the first stage 905, an icon associated with the YellowCab routing application, a description of the type of application, thename of the application (Yellow Cab in this example), a user rating ofthe application (4.5 stars in this example), a price to pay (free inthis example) in order to install the application, a selectable UI item935 (e.g., a Free button) for installing the application on the devicefrom within the mapping application, and a description of theapplication (indicated by a series of horizontal lines in this example).In some embodiments, the product page of an application includesadditional and/or different information about the application. Forinstance, the produce page of some routing applications includesscreenshot photos of the application, a file size of the application, arelease date of the application, the creator(s) of the application, userreviews of the application, etc.

The second stage 910 also shows that the user is selecting a selectableUI item 935 by tapping on the UI item 935 with a finger to initiateinstallation of the Yellow Cab routing application. Upon receiving theselection of the UI item 935, the mapping application of someembodiments installs the Yellow Cab routing application on the device,removes the UI item 935, and displays in place of the UI item 935 aselectable UI item 940 for launching the application to provide routedirections.

The third stage 915 shows the GUI 800 after the mapping application hasinstalled the Yellow Cab routing application on the device. As shown,the GUI 800 is still displaying the product page except the UI item 940is displayed instead of the UI item 935. In the third stage 915, theuser is selecting the UI item 940 by tapping on the UI item 940 with afinger in order to launch the installed Yellow Cab routing application.

Upon receiving the selection of the UI item 940, the mapping applicationlaunches the Yellow Cab application by sending route data to theapplication and transitioning to the Yellow Cab application. As indicateby the product page of the Yellow Cab routing application, theapplication is for providing taxi route directions. As noted above, theroute data includes the start location and the end location specified inthe directions editing interface shown in the second stage 810, in someembodiments. The route data may include additional and/or otherinformation, such as names associated with the start and end locations,phone numbers associate with the start and end locations, address bookidentifiers associated with the start and end locations that identifyentries in an address book application installed on the device, etc., inother embodiments.

The fourth stage 920 shows the GUI 800 after the mapping application haslaunched the Yellow Cab routing application and the Yellow Cab routingapplication has processed the route data. As shown, the Yellow Cabrouting application is displaying a time that a taxi was dispatched tothe user's current location, a time when the taxi is to pick up theuser, a remaining amount of time until the pickup, a time when the useris to arrive at “789 Center St.”, and a message informing the user thata taxi has been dispatched to the user's current location. For thisexample, the Yellow Cab routing application used the route data (thestart location and the end location in this example) to dispatch a taxito the user's current location, determine the taxi's pickup time,calculate the remaining amount of time until the pickup time, anddetermine a destination arrival time to “789 Center St.” by taxi.

The example illustrated in FIG. 9 shows a user launching a newlyinstalled application directly from the application's product page. Themapping application of some embodiments does not allow the user tolaunch a newly installed third-party routing application from theapplication's product page (e.g., by not displaying the selectable UIitem 940 after the mapping application installs the routingapplication). Rather, in some such embodiments, the user is required tonavigate back to the third-party routing application interface, and thenselect in the application's graphic representation in order to launchthe application. FIG. 10 conceptually illustrates an example of suchinstalling a third-party routing application and using the third-partyrouting application to provide route information. In particular, FIG. 10illustrates the GUI 800 at four different stages 1005-1020 of selecting,installing, and launching a third-party routing application.

The first stage 1005 of the GUI 800 is the same as the first stage 905of the GUI 800 described above by reference to FIG. 9. That is, the useris selecting the UI item 925 in order to transition to the Yellow Cabrouting application's product page. When the mapping applicationreceives the selection of the UI item 925, the mapping applicationdisplays the product page associated with the Yellow Cab routingapplication (e.g., by retrieving the page from the application sourcethat provides and/or hosts the routing application).

The second stage 1010 illustrates the GUI 800 after the mappingapplication transitioned to the Yellow Cab routing application's productpage, the user initiated installation of the Yellow Cab routingapplication (e.g., by selecting the UI item 935), and the mappingapplication installed the Yellow Cab routing application on the devicein response to the user's input. As shown, the GUI 800 is displaying aUI item 1035 to indicate that the Yellow Cab routing application isinstalled.

The second stage 1010 also shows that the user is selecting a selectableUI item 930 by tapping on the UI item 930 with a finger to transitionback to the third-party routing application interface illustrated in thefirst stage 1005. Upon receiving the selection of the UI item 930, themapping application of some embodiments displays the third-party routingapplication page illustrated in the first stage 1005.

In the third stage 1015, the GUI 800 shows the third-party routingapplication page that is to the one illustrated in the first stage 1005except the Yellow Cab routing application is now displayed in thesection (the upper section in this example) for displaying the list ofrouting applications that are already installed on the device on whichthe mapping application is executing as the mapping applicationinstalled the application in the second stage 1010.

The third stage 1015 also illustrates that the user is selecting aselectable UI item 1050 by tapping on the UI item 1050 with a finger tolaunch the installed Yellow Cab routing application. When the mappingapplication receives the selection of the UI item 1050, the mappingapplication launches the Yellow Cab application by sending route data tothe application and transitioning to the Yellow Cab application in asimilar manner as that described above by reference to FIG. 9.

The fourth stage 1020 is the same as the fourth stage 920 describedabove by reference to FIG. 9. That is, the stage 1020 shows the GUI 800after the mapping application has launched the Yellow Cab routingapplication and the Yellow Cab routing application has processed theroute data. In this example, the same route data is used to launch theYellow Cab routing application as the route data described above byreference to the fourth stage 920 of FIG. 9. As such, the Yellow Cabrouting application is displaying in the fourth stage 1020 a time that ataxi was dispatched to the user's current location, a time when the taxiis to pick up the user, a remaining amount of time until the pickup, atime when the user is to arrive at “789 Center St.”, and a messageinforming the user that a taxi has been dispatched to the user's currentlocation.

FIGS. 8-10 illustrate examples of different third-party applicationspresenting different information based on the route data in differentfashions. One of ordinary skill in the art will realize that athird-party application can use the route data in any number ofdifferent ways to present any number of different data in any number ofdifferent manners. Alternatively, or in conjunction with routedirections, the third-party routing application of some embodimentsprovides information other than route directions (e.g., regionaladvertisements, news, weather, etc.).

In addition, FIGS. 8-10 show route directions provided by third-partyrouting applications based on start and end locations specified by theuser through the directions editing interface. In some embodiments, theuser specifies route data provided from map search results that maycontain sensitive data (e.g., device location). The mapping applicationof some embodiments provides a security feature that redacts data thatis defined as sensitive data from such route data before sending theroute data to a third-party routing application. In some embodiments,the security feature is implemented as a set of application programminginterfaces (APIs).

As described above, when a user initially taps the search field andbefore the user provides or edits any search terms, or when the searchfield is empty, the mapping application of some embodiments displays asearch table that includes a list of recent searched terms and searchedroute directions. In some embodiments, the search table also includesrecent route directions used by third-party routing applications. FIG.11 conceptually illustrates four stage 1105-1120 of a user's interactionwith the application of some embodiments to display a search table witha list of the user's recent searches and recent route directions.

The first stage 1105 is similar to the first stage 505 described aboveby reference to FIG. 5. That is, the first stage 1105 shows the deviceafter the mapping application has opened and the user is tapping thesearch field 165.

The second stage 1110 is similar the to second stage 510 described aboveby reference to FIG. 5 except the search table 540 in the second stage1110 includes a recent route direction used by a third-party routingapplication. As shown, the search table indicates that the mappingapplication recently provided a third-party routing application (asindicated by icon 1125) with a route direction from the Current Locationto “789 Center St.”. In this example, the route direction corresponds tothe route direction sent to the Acme Transit application 840 illustratedin FIG. 8.

The third stage 1115 illustrates the user's selection of the directionsto “789 Center St.” option, listed as the last item in the search table.By providing this option in the search table, the mapping applicationprovides the user the ability to quickly obtain information for recentthird-party routing application route direction information withouthaving to extensively navigate the application to receive these results.

The fourth stage 1120 illustrates the mapping application displaying aroute corresponding to directions from the user's current location to“789 Center St.”, which is the same route direction illustrated in FIG.8. As shown, the Acme Transit routing application is displaying the samelist of route directions as that illustrated in the fourth stage 820 ofFIG. 8.

As mentioned above, the product pages of different third-partyapplications include a variety of different information to provide theuser with details about the applications. FIG. 12 conceptuallyillustrates an example of browsing a product page of an availablethird-party routing application according to some embodiments of theinvention. In particular, FIG. 12 illustrates the GUI 800 at fourdifferent stages 1205-1220 of browsing a product page of an availablethird-party routing application according to some embodiments.

The first stage 1205 of the GUI 800 is similar to the first stage 905 ofthe GUI 800 described above by reference to FIG. 9. That is, the firststage 1205 shows an available third-party routing application beingselected. In this example, the user is selecting the graphicrepresentation available third-party routing application 846 by tappingon a UI item 1225 with a finger in order to transition to a product pageassociated with a routing application (the CA National Parks routingapplication in this example) represented by the graphic representation846. When the mapping application receives the selection of the UI item1225, the mapping application of some embodiments displays the productpage associated with the CA National Parks routing application. In someembodiments, the mapping application displays the product page byretrieving the page from the application source that provides and/orhosts the routing application.

In the second stage 1210, the user is browsing through a textualdescription of a third-party routing application′ product page. In someembodiments, the textual description of a routing application includesany number of different pieces of information related to the routingapplication. Examples of information include a summary of theapplication, features of the application, bug fixes included since thelast release of the application, contact information for technicalsupport, testimonials from users of the application, etc.

As shown in the second stage 1210, the user is scrolling through theproduct page of the routing application 846 by touching a display areaof the product page with a finger while moving the finger along anupwards direction, as indicated by an arrow. When the mappingapplication receives the touch and move input (e.g., a swipe gesture),the mapping application in some embodiments displays the routingapplication 846's product page scrolling down.

The third stage 1215 shows the GUI 800 displaying photos included in aproduct page of a third-party routing application. Different embodimentsprovide differently layouts of information included in a third-partyrouting application's product page. For instance, in this example, theapplication 846's product page includes a textual description near thetop of the product page followed by several photos related to theapplication 846. Finally, the bottom of the application 846's productpage includes various other information associated with the application846.

For this example, once the user scrolls the product page such that thesection that contains the photos is substantially or entirely withinview through a screen of a device on which the mapping application isexecuting, the mapping application allows the user to browse through thephotos. Here, the photos associated with the routing application 846 arearranged in a horizontal manner. As such, the user must provide input toscroll horizontally (e.g., horizontal swipe gestures) in order to browsethrough the application 846's photos. As shown at the third stage 1215,the routing application 846's product page includes three photos, asindicated by a set of three page indicators 1230. In particular, the GUI800 is displaying the second photo, as indicated by a highlighting ofthe second page indicator in the set of page indicators 1230.

In the fourth stage 1220, the GUI 800 is displaying a portion of thebottom of a routing application's product page. At the fourth stage1220, the user is scrolling through towards the bottom of the routingapplication 846's product page by touching the display area of theproduct page with a finger while moving the finger along an upwardsdirection, as indicated by an arrow. When the mapping applicationreceives the touch and move input (e.g., a swipe gesture), the mappingapplication in some embodiments displays the routing application 846'sproduct page scrolling down.

As noted above, the product page of a third-party routing application ofsome embodiments includes various additional information related to theapplication. In this example, the routing application 846's product pageat the bottom includes the name of the company that developed therouting application 846, the date the application 846 was last updated,and the application 846's current version number. Additionally, therouting application 846's product page includes a selectable UI item1235 for transitioning to a page that displays reviews and ratings forthe application 846, a selectable UI item 1240 for notifying (e.g., viaemail, short message service (SMS) messaging, Twitter®, Facebook®, etc.)an individual about the application 846, and a selectable UI item 1245for accessing support for the application 846.

The above-described FIG. 12 illustrates one example of informationincluded in a third-party routing application's product page. One ofordinary skill in the art will understand that a routing application'sproduct page may contain an infinite number of additional and/ordifferent information related to the application. Often, the developersof many third-party applications choose the particular details (e.g.,features, photos, compatibility requirements, support, etc.) about theapplications along with the application itself to provide to anapplication source for hosting on the application source.

In addition, FIG. 12 shows a feature of the mapping application of someembodiments that provides details of available third-party routingapplications by tightly integrating with and providing through themapping application information specified for available third-partyapplications. In this fashion, a user of the mapping application of someembodiments may browse an application's product page within the mappingapplication when the user might want to learn about an availablethird-party application (e.g., the purpose of the application, thefeatures of by the application, etc.) before deciding whether to installthe application for use with the mapping application.

FIG. 13 conceptually illustrates a software architecture of a mappingapplication 1300 of some embodiments that provides a third-party routingapplication feature. In some embodiments, the mapping application 1300is a stand-alone application or is integrated into another application,while in other embodiments the mapping application 1300 might beimplemented within an operating system. Furthermore, in someembodiments, the mapping application 1300 is provided as part of aserver-based solution. In some such embodiments, the mapping application1300 is provided via a thin client. That is, the mapping application1300 runs on a server while a user interacts with the mappingapplication 1300 via a separate machine remote from the server. In othersuch embodiments, the mapping application 1300 is provided via a thickclient. That is, the mapping application 1300 is distributed from theserver to the client machine and runs on the client machine.

As shown, the mapping application 1300 includes routing data manager1310, routing application manager 1320, local routing applicationidentifier 1330, remote routing application identifier 1340, andapplication ranking module 1350. The mapping application 1300 alsoincludes installed applications storage 1360. The installed applicationstorage 1360 stores applications (e.g., games, image editingapplications, streaming video applications, etc.) that are native to thedevice on which the application 1300 runs and/or applications that auser installs on the device. In some embodiments, the installedapplications storage 1360 is stored in one physical storage while, inother embodiments, the installed applications storage 1360 is stored onseveral separate physical stores.

The routing data manager 1310 is responsible for handling route data forroute directions. In some embodiments, the routing data manager 1310receives the route data from a user of the mapping application 1300 in asimilar manner illustrated several of the above described figures (e.g.,FIGS. 2, 5, and 6-8). The routing data manager 1310 of some embodimentstranslates, converts, modifies, and/or redacts data from the route data.For instance, for security purposes, the routing data manager 1310redacts data that is defined as sensitive data from the route databefore sending the route data to the routing application manager 1320.

Based on route data received from the routing data manager 1310, therouting application manager 1320 handles operations for providingappropriate routing applications to the user. The routing applicationmanager 1320 ensures that routing applications are identified and rankedfor the mapping application 1300 to provide to the user.

The local routing application identifier 1330 identifies third-partyrouting applications that are installed on the device by accessing theinstalled applications storage 1360. In some embodiments, the localrouting application identifier 1330 identifies installed third-partyrouting applications that are defined for the area along and/or around aroute specified by the route data. The local routing applicationidentifier 1330 of some embodiments receives from the routingapplication manager 1320 a list of third-party routing applications thatare defined for the area along and/or around a route specified by theroute data and identifies the routing applications in the list that areinstalled on the device.

The remote routing application identifier 1340 identifies third-partyrouting applications from a set of application sources 1370. As notedabove, application sources may be defined to include any number ofthird-party application providers and/or hosts (e.g., online applicationstores, application distribution platforms, digital distributionservices, etc.). The remote routing application identifier 1340 of someembodiments sends route data to the set of application sources 1370 andrequests for relevant third-party routing applications based on theroute data (e.g., third-party routing applications that are defined forthe area along and/or around a route specified by the route data).

The application ranking module 1350 is responsible for rankingthird-party routing applications. In some embodiments, the applicationranking module 1350 ranks third-party routing application based on a setof factors. As mentioned above, examples of factors include thepopularity of the application (e.g., the number of downloads, ratings,rating score, etc.), the frequency in which local and/or remote userssend route directions to the application, the size of the geographicarea specified by the application's coverage file (e.g., large areasranked lower), the distance of the current location of the user withrespect to the geographic area specified by the application's coveragefile, the user rating of the application, etc. In order to facilitatemaintaining the frequency in which users send route directions to theapplication, the mapping application of some embodiments automaticallysends data to a centralized location (e.g., a dedicated set of computingdevices, one of the defined applications sources, etc.) for storage andprocessing.

In some instances, the application ranking module 1350 receivesdifferent sets of ranked routing applications. For instance, theapplication ranking module 1350 might receive ranked routingapplications from the local routing application identifier 1330 andranked routing applications from the remote routing applicationidentifier 1330. In some such instances, the application ranking module1350 reconciles the different sets of ranked routing applications andgenerates a single set of ranked routing applications using the factorsnoted above.

An example operation of the mapping application 1300 will now bedescribed. The operation begins by the routing data manager 1310receiving route data 1305. As shown, the route data 1305 includes startlocation data, end location data, and in some instances, other data.Examples of other data include names associated with the start and endlocations, phone numbers associate with the start and end locations,address book identifiers associated with the start and end locationsthat identify entries in an address book application installed on thedevice, etc. When the routing data manager 1310 receives the route data1305, the routing data manager 1310 performs various operations on theroute data 1305, such as translating, converting, modifying, and/orredacting data from the route data and passes the processed route data1305 to the routing application manager 1320.

When the routing application manager 1320 receives the processed routedata 1305, the routing application manager 1320 passes the processedroute data 1305 to the local routing application identifier 1330 and theremote routing application identifier 1340 to identify third-partyrouting applications. When the local routing application identifier 1330receives the processed route data 1305, the local routing applicationidentifier 1330 accessing the installed applications storage 1360 toidentify third-party routing applications that are installed on thedevice and defined for the area along and/or around a route specified bythe route data. The local routing application identifier 1330 passes theidentified routing applications to the routing application manager 1320.

When the remote routing application identifier 1340 receives theprocessed route data 1305 from the routing application manager 1320, theremote routing application identifier 1340 sends the route data 1305 tothe set of application sources 1370 and requests for relevantthird-party routing applications based on the route data (e.g.,third-party routing applications that are defined for the area alongand/or around a route specified by the route data). The remote routingapplication identifier 1340 then returns the identified routingapplications to the routing application manager 1320.

When the routing application manager 1320 receives routing applicationsfrom the local routing application identifier 1330 and the remoterouting application identifier 1340, the routing application manager1320 sends the identified routing applications to the applicationranking module 1350.

Next, the application ranking module 1350 ranks identified routingapplications using the factors described above and returns a ranked listof the identified routing applications to the routing applicationmanager 1320. When the routing application manager 1320 receives theranked routing applications from the application ranking module 1350,the mapping application 1300 provides them to the user (e.g., bydisplaying the routing applications according to the applications'rankings).

FIG. 14 conceptually illustrates a process 1400 of some embodiments forimplementing a third-party routing application feature. In someembodiments, a mapping application that provides a third-party routingapplication feature performs the process 1400 (e.g., the mappingapplication described above by reference to FIG. 13).

The process 1400 starts by receiving (at 1410) a request for routedirections with a third-party routing application feature enabled, basedon start and end locations. In some embodiments, the process 1400receives the request through a selection of a UI item (e.g., the UI item835). Additional and/or other methods of receiving the request arepossible. For instance, the process 1400 of some embodiments receivesthe request through a hotkey, a keystroke, a series of keystrokes, acombination of keystrokes, an option selected from a pop-up menu orpull-down menu, or any other appropriate method to request for routedirections with a third-party routing application feature enabled.

As mentioned above, the mapping application of some embodiments managesits own dynamically-updated declaration of geographic coverage tomaintain geographically relevant routing applications on-the-fly. Insome such embodiments, the process 1400 receives requests for routedirections with a third-party routing application feature enabled, basedon the mapping application's declaration of geographic coverage.

Next, the process 1400 identifies (at 1420) third-party routingapplications that are installed on the device. In some embodiments, theprocess 1400 identifies these routing applications by identifyinginstalled third-party routing applications with coverage files thatspecify geographical areas within which the start and end locationsspecified in the directions editing interface are included. In otherembodiments, the process 1400 also identifies installed routingapplications with coverage files that specify geographical areas withinwhich one of the locations is included. The process 1400 of some suchembodiments only identifies installed routing applications with coveragefiles that specify geographical areas (1) within which one of thelocations is included and (2) from which the other location is within adefined distance. In some cases, the device does not have any relevantthird-party routing applications installed on the device, and thus, theprocess 1400 does not identify any installed application.

The process 1400 then requests (at 1430) for available third-partyrouting applications from a defined set of application sources. Asmentioned above, the set of application sources may be defined toinclude any number of third-party application providers and/or hosts(e.g., online application stores, application distribution platforms,digital distribution services, etc.). In some embodiments, the process1400 displays the identified applications (e.g., in a third-partyrouting application interface).

After requesting for available routing applications from applicationsources, the process 1400 provides (at 1440) a display of routingapplications for selection. In some embodiments, the process 1400generates a display that includes installed routing applications,available routing applications returned from the request for availablethird-party routing applications, or a combination of both types ofrouting applications.

As discussed above, the mapping application ranks third-party routingapplications and displays the applications in the ranked order, in someembodiments. The process 1400 of some embodiments ranks the routingapplications included in the display according to any of the techniquesdescribed above by reference to FIGS. 8 and 13 and arranges the displayof the routing applications based on rankings of the applications.

The process 1400 then receives (at 1450) a selection of an identifiedthird-party routing application to use to provide route directions. Theprocess 1400 of some embodiments receives the selection through aselection of a UI item (e.g., the UI item 850 or the UI item 940).Additional and/or other methods of receiving the selection are possible.For example, in some embodiments, the process 1400 receives theselection through a hotkey, a keystroke, a series of keystrokes, acombination of keystrokes, an option selected from a pop-up menu orpull-down menu, or any other appropriate method to select a third-partyrouting application.

Next, the process 1400 determines (at 1460) whether the selectedthird-party routing application is installed on the device. When theprocess 1400 determines that the selected third-party routingapplication is installed on the device, the process 1400 proceeds to1480. Otherwise, the process 1400 installs (at 1470) the selectedrouting application. In some embodiments, the process 1400 requiresinput from user (e.g., a selection of the UI item 935) in order toinstall the application. In other embodiments, the process 1400automatically installs the selected application without input from theuser.

Finally, the process 1400 launches (at 1480) the selected third-partyrouting application based on the start and end locations. The process1400 of some embodiments sends route data (e.g., the start and endlocations) to the third-party routing application when launching theapplication. In cases where the selected routing application had not yetbeen installed, the process 1400 of some embodiments requires input fromuser (e.g., a selection of the UI item 940) in order to launch theapplication. In other embodiments, the process 1400 automaticallylaunches the selected application without input from the user after theprocess 1400 installs the application.

A. Indexing Applications

As described above, the mapping application of some embodiments sendsrequest to application sources for third-party routing applications thatare near the area of a route direction. In order to quickly search amongthe third-party routing applications and provide them to the mappingapplication, the application source of some embodiments indexes thethird-party routing applications for fast and efficient retrieval.

As noted above, in some embodiments, a third-party routing applicationis associated with a coverage file that specifies a geographic area inwhich the application is relevant. In some embodiments, the applicationsource indexes routing applications based on the applications' coveragefiles. For example, in some embodiments, the application source definesa hierarchy of Cartesian tiers that correspond to a map. Each Cartesiantier includes a grid with a different number of dimensions (e.g., 2×2,3×3, 4×4, 5×5, etc.) that divides the map into a set of boxes (alsoreferred to as grid boxes) defined by the grid. For instance, theCartesian tier at the top of the hierarchy (e.g., tier 1) may be definedby a 1×1 grid that is the size of the entire map, the Cartesian tier atthe bottom of the hierarchy (e.g., tier 15) may be defined by a gridwith a largest number of dimensions, and the Cartesian tiers from thetop of the hierarchy to the bottom of the hierarchy have grids withincreasing numbers of dimensions. One of ordinary skill in the art willunderstand that the application source may define the hierarchy with anynumber of different Cartesian tiers with grids that have differentlevels of granularity (e.g., dimensions).

FIG. 15 conceptually illustrates a process 1500 of some embodiments forindexing a third-party routing application. The application source ofsome embodiments performs the process 1500 for each routing applicationprovided by the application source. In some embodiments, the applicationsource performs the process 1500 when application is added to theapplication source and not yet indexed. The application source of someembodiments utilizes batch processing and, thus, repeatedly performs theprocess 1500 to index any added by not yet indexed routing applicationsat defined intervals (e.g., 1 hour, 12 hours, 1 day, etc.).

The process 1500 will be described by reference to FIG. 16, whichconceptually illustrates an example of indexing an application accordingto some embodiments of the invention. In particular, FIG. 16 illustratesfour stages 1605-1620 that show indexing an application based on aregion 1625 of a map 1600 in which the application is defined asrelevant.

The process 1500 starts by identifying (at 1510) a region in a mapassociated with the application. As mentioned above, in someembodiments, a third-party routing application is associated with acoverage file that specifies a geographic area in which the applicationis relevant. The coverage file of some embodiments specifies thegeographic area as a polygon defined by an ordered set of vertices. Insome embodiments, the coverage file is a formatted according to aGeoJSON format. Referring to FIG. 16 as an example, the first stage 1620illustrates the map 1600 and the region 1625 in which the application isdefined as relevant for this example. As shown, the region 1625 is arectangular polygon that is defined by four vertices.

Next, the process 1500 determines (at 1520) a bounding box in the mapbased on the region. The process 1500 of different embodiments usedifferent techniques to determine the bounding box in the map. Forinstance, the process 1500 of some embodiments uses the maximum andminimum Cartesian coordinate values of the vertices that define theregion to form the sides of the bounding box by (1) iterating throughall the points of the region, (2) maintaining a minimum X, minimum Y,maximum X, and maximum Y coordinate values, and generating a boundingbox having a point with the minimum X and Y values and another point inthe opposite diagonal corner with the maximum X and Y values. Referringto FIG. 16 as an example, the second stage 1610 illustrates a boundingbox 1630 in the map 1600 that is determined based on the maximum andminimum Cartesian coordinate values of the vertices of the region 1625.

The process 1500 then identifies (at 1530) a tier in a hierarchy ofCartesian tiers. In some embodiments, the process 1500 identifies thetop tier of the hierarchy and then iterates down the hierarchy whensubsequent tiers are processed. Next, the process 1500 identifies (at1540) a grid box in the identified tier based on the bounding box. Asnoted above, each Cartesian tier in some embodiments includes a gridwith a different number of dimensions that divides a map into a set ofgrid boxes defined by the grid. In some embodiments, the process 1500identifies a grid box in the tier with which that the bounding boxoverlaps.

After identifying a grid box, the process 1500 determines (at 1550)whether the grid box is inside the region in the map associated with theapplication. When the process 1500 determines that the grid box isinside the region in the map, the process 1500 continues to 1560.Otherwise, the process 1500 proceeds to 1570. In some embodiments, whenthe process 1500 determines that the grid box overlaps or intersects theregion in the map, the process 1500 continues to 1560 (to index the gridbox).

FIG. 16 shows examples of identifying a grid box and determining whetherto index the application using the grid box in two different tiers. Asshown, the third stage 1615 illustrates a tier (Tier 1 in this example)of the hierarchy of Cartesian tiers that has four grid boxes. In thethird stage 1615, the process 1500 iteratively identifies grid boxes 1-4since the bounding box 1630 overlaps with each of the grid boxes 1-4.The process 1500 does not index the application with any of the gridboxes 1-4 because none of the grid boxes are within the region 1625. Forembodiments where the process 1500 indexes grid boxes that intersect theregion in the map, the process 1500 indexes the grid boxes 1-4 for Tier1 of the hierarchy.

The fourth stage 1620 illustrates another tier (Tier 2 in this example)of the hierarchy of Cartesian tiers that has sixteen grid boxes. Here,the process 1500 iteratively identifies grid boxes 1-3, 5-7, 9-11, and13-15 as the bounding box 1630 overlaps with each of these grid boxes.The process 1500 only indexes the application with grid boxes 6 and 10since those are the only identified grid boxes that are within theregion 1625. For embodiments where the process 1500 indexes grid boxesthat intersect the region in the map, the process 1500 indexes the gridboxes 1-3, 5-7, 9-11, and 13-15 for Tier 2 of the hierarchy.

Returning to FIG. 15, at 1560, the process 1500 indexes the applicationwith the identified grid box. In some embodiments, the process 1500indexes the application with the grid box by adding the application to alist of applications associated with the grid box. The process 1500 ofsome embodiments indexes the application by encoding the coordinates ofthe grid box (e.g., the row and column location of the grid within thetier). For instance, in some embodiments the process 1500 encodes thecoordinates by (1) converting the coordinates of the grid box to afloating point number (e.g., grid square {12, 15} is encoded as 12.15),(2) converting the floating point number to a 64-bit binaryrepresentation (e.g., according to a Institute of Electrical andElectronics Engineers (IEEE) 754 specification), and (3) converting the64-bit binary representation into a string. Some embodiments convert the64-bit binary representation into a string by (1) splitting the bitsinto groups of 7 and (2) converting each 7-bit number into an AmericanStandard Code for Information Interchange (ASCII) character to produce a10-character string. After encoding the coordinates of the grid box, theprocess 1500 in some embodiments stores in an inverted index for theidentified tier the encoded coordinates with an identifier thatidentifies the application.

Next, the process 1500 determines (at 1570) whether any grid box of thetier is left to process. When the process 1500 determines that there isa grid box of the tier is left to process, the process 1500 returns to1540 to continue processing any remaining grid boxes. Otherwise, theprocess 1500 determines (at 1580) whether any tier in the hierarchy ofCartesian tiers is left to process. When the process 1500 determinesthat there is a tier left to process, the process 1500 returns to 1530to continue processing any remaining tiers in the hierarchy of Cartesiantiers. When the process 1500 determines that there is not a tier left toprocess, the process 1500 ends.

B. Searching for Applications

FIG. 17 conceptually illustrates a process 1700 of some embodiments foridentifying third-party routing applications available on an applicationsource. In some embodiments, the application source performs the process1700 to identify third-party routing applications provided by and/orhosted on the application source. The application source of some suchembodiments performs the process 1700 in response to a request from amapping application for third-party routing applications.

The process 1700 begins by receiving (at 1710) a request for third-partyrouting applications base on a set of locations. In some embodiments,the set of locations include a start location and an end location forroute directions. The set of locations of some embodiments includesadditional and/or other locations (e.g., intermediary destinationlocations) for route directions.

Next, the process 1700 identifies (at 1720) routing applications basedon the set of locations. The process 1700 of different embodiments usedifferent techniques to identify routing applications. For instance, theapplication source of some embodiments identifies routing applicationsbased on a cartographic index of routing applications. In someembodiments, the application source indexes routing applications using ahierarchy of cartographic tiles (e.g., a 15 level hierarchy).

The first level of the hierarchy includes a set of course cartographictiles that together covers a defined region (e.g., a state, a country, acontinent, etc.). Each cartographic tile in the first level of thehierarchy is associated with a set of cartographic tiles in the secondlevel that together represents the first level cartographic tile. Theset of cartographic tiles in the second level associated with the firstlevel tile provides a more granular decomposition of the first levelcartographic tile. The cartographic tile in each level is associatedwith a set of cartographic tiles in the next level in the similar mannerexplained.

As noted above, the third-party routing application of some embodimentsis associated with a coverage file that specifies a geographic area inwhich the application is relevant. When the application source receivessuch a third-party routing application, the application source indexesthe application by (1) identifying the top-most tile in the hierarchythat includes the geographic area specified by the routing application'scoverage file and (2) indexing the application as associated with theidentified tile and all of its associated lower-level sets of tiles. Inthis fashion, the application source is able to quickly identify any andall routing applications that are specified as geographically related toa particular geographic area (i.e., the geographic areas specified bythe coverage files of the identified routing applications are allassociated with in a particular cartographic tile that represents theparticular geographic area).

For embodiments that utilize a cartographic index, the process 1700identifies the third-party routing applications based on the set oflocations by (1) identifying the top-most tile in the hierarchy thatincludes the set of locations and (2) identifying all the routingapplications that are associated with the tile. In some embodiments, theprocess 1700 may identify the cartographic tile one level higher towhich the top-most file is associated (e.g., using the top-most tile isnot associated with any routing applications) and then identify therouting applications that are associated with the higher-level tile.Other methods are possible.

Finally, the process 1700 returns (at 1730) the identified third-partyrouting applications to the requestor. In some embodiments, the process1700 also returns for each identified third-party routing application aproduct page associated with the routing application (e.g., similar tothe product page described above by reference to FIG. 9).

As explained above, the application source of some embodiments indexesthird-party routing applications for fast and efficient retrieval usinga hierarchy of Cartesian tiers. FIG. 18 conceptually illustrates aprocess 1800 of some embodiments for searching for third-party routingapplications based on such an index. In some embodiments, the process1700, which is described above by reference to FIG. 17, performs theprocess 1800 as part of operation 1720 to identify routing applications.

The process 1800 begins by identifying (at 1810) a set of locations forperforming the search. The set of locations specified in the request forrouting applications. As noted above, the set of locations includes astart location and an end location of a route, in some embodiments.

Next, the process 1800 determines (at 1820) a circle based on the set oflocations. The process 1800 of different embodiments use differentmethods to determine the circle. In some embodiments, the process 1800uses one of the locations as the center of the circle and defines aradius for the circle such that the circle encompasses the set oflocations. The process 1800 of some embodiments defines a line betweenthe set of locations and uses the midpoint of the line as the center ofthe circle and similarly and defines a radius for the circle so that thecircle encompasses the set of locations. The process 1800 may be useadditional and/or different methods in some embodiments.

The process 1800 then identifies (at 1830) a tier in the hierarchy ofCartesian tiers in which to perform the search. In some embodiments, theprocess 1800 identifies the tier based on the radius of the circle. Theprocess 1800 in some embodiments identifies the tier in the hierarchywhere the size of the individual grid boxes is most similar to thediameter of the circle.

In some embodiments, the process 1800 identifies the tier in thehierarchy that has the most number of grid boxes intersecting the circleand the number of intersecting grid boxes is less than a definedthreshold amount. For instance, the process 1800 of some embodimentsidentifies the tier in the hierarchy with the most number of grid boxesintersecting the circle that is less than a five. As such, when a tierhas four (but no more) grid boxes that intersect the circle the process1800 identifies the tier. In some embodiments, when no such tier exists,the process 1800 identifies the highest tier in the hierarchy.

After identifying the tier, the process 1800 then identifies (at 1840) agrid box in the identified tier. Next, the process 1800 determines (at1850) whether the grid box is inside the circle. When the process 1800determines that the grid box is inside the circle, the process 1800continues to 1860. Otherwise, the process 1800 proceeds to 1870.

At 1860, the process 1800 adds the applications indexed with the gridbox to the result set of applications. The process 1800 then determines(at 1870) whether any grid box of the tier is left to process. When theprocess 1800 determines that there is a grid box of the tier is left toprocess, the process 1800 returns to 1840 to continue processing anyremaining grid boxes. Otherwise, the process 1800 continues to 1870.

Finally, the process 1800 filters (at 1880) the result set ofapplications to refine the search results and eliminate applicationsthat are not relevant. Different embodiments use different approaches tofilter the result set of applications. One approach is described indetail below by reference to FIG. 19.

FIG. 19 conceptually illustrates a process 1900 of some embodiments forfiltering search results of third-party routing applications. In someembodiments, the process 1800 that is described above by reference toFIG. 18 performs the process 1900 as part of operation 1880 to filterthe result set of applications.

The process 1900 starts by identifying (at 1910) an application in theresult set of applications. Next, the process 1900 identifies (at 1920)the region associated with the identified application. As mentionedabove, the third-party routing application of some embodiments isassociated with a coverage file that specifies a geographic area inwhich the application is relevant. In such embodiments, the process 1900identifies the geographic area specified in the application's coveragefile.

The process 1900 then determines (at 1930) whether the set of locations(e.g., a start location and an end location) used to produce theresulting set of applications is within the identified region associatedwith the application. When the process 1900 determines that the set oflocations is within the region, the process 1900 adds (at 1940) theapplication to a filtered result set of applications. Otherwise, theprocess 1900 proceeds to 1950.

At 1950, the process 1900 determines whether any application in theresult set of applications is left to process. When the process 1900determines that there is an application left to process, the process1900 returns to 1910 to continue processing any remaining applicationsin the result set of applications. Otherwise, the process 1900 ends.

V. Electronic System

Many of the above-described features and applications are implemented assoftware processes that are specified as a set of instructions recordedon a computer readable storage medium (also referred to as computerreadable medium). When these instructions are executed by one or morecomputational or processing unit(s) (e.g., one or more processors, coresof processors, or other processing units), they cause the processingunit(s) to perform the actions indicated in the instructions. Examplesof computer readable media include, but are not limited to, CD-ROMs,flash drives, random access memory (RAM) chips, hard drives, erasableprogrammable read-only memories (EPROMs), electrically erasableprogrammable read-only memories (EEPROMs), etc. The computer readablemedia does not include carrier waves and electronic signals passingwirelessly or over wired connections.

In this specification, the term “software” is meant to include firmwareresiding in read-only memory or applications stored in magnetic storagewhich can be read into memory for processing by a processor. Also, insome embodiments, multiple software inventions can be implemented assub-parts of a larger program while remaining distinct softwareinventions. In some embodiments, multiple software inventions can alsobe implemented as separate programs. Finally, any combination ofseparate programs that together implement a software invention describedhere is within the scope of the invention. In some embodiments, thesoftware programs, when installed to operate on one or more electronicsystems, define one or more specific machine implementations thatexecute and perform the operations of the software programs.

A. Mobile Device

The mapping and navigation applications of some embodiments operate onmobile devices, such as smart phones (e.g., iPhones®) and tablets (e.g.,iPads®). FIG. 20 is an example of an architecture 2000 of such a mobilecomputing device. Examples of mobile computing devices includesmartphones, tablets, laptops, etc. As shown, the mobile computingdevice 2000 includes one or more processing units 2005, a memoryinterface 2010 and a peripherals interface 2015.

The peripherals interface 2015 is coupled to various sensors andsubsystems, including a camera subsystem 2020, a wireless communicationsubsystem(s) 2025, an audio subsystem 2030, an I/O subsystem 2035, etc.The peripherals interface 2015 enables communication between theprocessing units 2005 and various peripherals. For example, anorientation sensor 2045 (e.g., a gyroscope) and an acceleration sensor2050 (e.g., an accelerometer) are coupled to the peripherals interface2015 to facilitate orientation and acceleration functions.

The camera subsystem 2020 is coupled to one or more optical sensors 2040(e.g., a charged coupled device (CCD) optical sensor, a complementarymetal-oxide-semiconductor (CMOS) optical sensor, etc.). The camerasubsystem 2020 coupled with the optical sensors 2040 facilitates camerafunctions, such as image and/or video data capturing. The wirelesscommunication subsystem 2025 serves to facilitate communicationfunctions. In some embodiments, the wireless communication subsystem2025 includes radio frequency receivers and transmitters, and opticalreceivers and transmitters (not shown in FIG. 20). These receivers andtransmitters of some embodiments are implemented to operate over one ormore communication networks such as a GSM network, a Wi-Fi network, aBluetooth network, etc. The audio subsystem 2030 is coupled to a speakerto output audio (e.g., to output voice navigation instructions).Additionally, the audio subsystem 2030 is coupled to a microphone tofacilitate voice-enabled functions, such as voice recognition (e.g., forsearching), digital recording, etc.

The I/O subsystem 2035 involves the transfer between input/outputperipheral devices, such as a display, a touch screen, etc., and thedata bus of the processing units 2005 through the peripherals interface2015. The I/O subsystem 2035 includes a touch-screen controller 2055 andother input controllers 2060 to facilitate the transfer betweeninput/output peripheral devices and the data bus of the processing units2005. As shown, the touch-screen controller 2055 is coupled to a touchscreen 2065. The touch-screen controller 2055 detects contact andmovement on the touch screen 2065 using any of multiple touchsensitivity technologies. The other input controllers 2060 are coupledto other input/control devices, such as one or more buttons. Someembodiments include a near-touch sensitive screen and a correspondingcontroller that can detect near-touch interactions instead of or inaddition to touch interactions.

The memory interface 2010 is coupled to memory 2070. In someembodiments, the memory 2070 includes volatile memory (e.g., high-speedrandom access memory), non-volatile memory (e.g., flash memory), acombination of volatile and non-volatile memory, and/or any other typeof memory. As illustrated in FIG. 20, the memory 2070 stores anoperating system (OS) 2072. The OS 2072 includes instructions forhandling basic system services and for performing hardware dependenttasks.

The memory 2070 also includes communication instructions 2074 tofacilitate communicating with one or more additional devices; graphicaluser interface instructions 2076 to facilitate graphic user interfaceprocessing; image processing instructions 2078 to facilitateimage-related processing and functions; input processing instructions2080 to facilitate input-related (e.g., touch input) processes andfunctions; audio processing instructions 2082 to facilitateaudio-related processes and functions; and camera instructions 2084 tofacilitate camera-related processes and functions. The instructionsdescribed above are merely exemplary and the memory 2070 includesadditional and/or other instructions in some embodiments. For instance,the memory for a smartphone may include phone instructions to facilitatephone-related processes and functions. Additionally, the memory mayinclude instructions for a mapping and navigation application as well asother applications. The above-identified instructions need not beimplemented as separate software programs or modules. Various functionsof the mobile computing device can be implemented in hardware and/or insoftware, including in one or more signal processing and/or applicationspecific integrated circuits.

While the components illustrated in FIG. 20 are shown as separatecomponents, one of ordinary skill in the art will recognize that two ormore components may be integrated into one or more integrated circuits.In addition, two or more components may be coupled together by one ormore communication buses or signal lines. Also, while many of thefunctions have been described as being performed by one component, oneof ordinary skill in the art will realize that the functions describedwith respect to FIG. 20 may be split into two or more integratedcircuits.

B. Computer System

FIG. 21 conceptually illustrates another example of an electronic system2100 with which some embodiments of the invention are implemented. Theelectronic system 2100 may be a computer (e.g., a desktop computer,personal computer, tablet computer, etc.), phone, PDA, or any other sortof electronic or computing device. Such an electronic system includesvarious types of computer readable media and interfaces for variousother types of computer readable media. Electronic system 2100 includesa bus 2105, processing unit(s) 2110, a graphics processing unit (GPU)2115, a system memory 2120, a network 2125, a read-only memory 2130, apermanent storage device 2135, input devices 2140, and output devices2145.

The bus 2105 collectively represents all system, peripheral, and chipsetbuses that communicatively connect the numerous internal devices of theelectronic system 2100. For instance, the bus 2105 communicativelyconnects the processing unit(s) 2110 with the read-only memory 2130, theGPU 2115, the system memory 2120, and the permanent storage device 2135.

From these various memory units, the processing unit(s) 2110 retrievesinstructions to execute and data to process in order to execute theprocesses of the invention. The processing unit(s) may be a singleprocessor or a multi-core processor in different embodiments. Someinstructions are passed to and executed by the GPU 2115. The GPU 2115can offload various computations or complement the image processingprovided by the processing unit(s) 2110. In some embodiments, suchfunctionality can be provided using CoreImage's kernel shading language.

The read-only-memory (ROM) 2130 stores static data and instructions thatare needed by the processing unit(s) 2110 and other modules of theelectronic system. The permanent storage device 2135, on the other hand,is a read-and-write memory device. This device is a non-volatile memoryunit that stores instructions and data even when the electronic system2100 is off. Some embodiments of the invention use a mass-storage device(such as a magnetic or optical disk and its corresponding disk drive,integrated flash memory) as the permanent storage device 2135.

Other embodiments use a removable storage device (such as a floppy disk,flash memory device, etc., and its corresponding drive) as the permanentstorage device. Like the permanent storage device 2135, the systemmemory 2120 is a read-and-write memory device. However, unlike storagedevice 2135, the system memory 2120 is a volatile read-and-write memory,such a random access memory. The system memory 2120 stores some of theinstructions and data that the processor needs at runtime. In someembodiments, the invention's processes are stored in the system memory2120, the permanent storage device 2135, and/or the read-only memory2130. From these various memory units, the processing unit(s) 2110retrieves instructions to execute and data to process in order toexecute the processes of some embodiments.

The bus 2105 also connects to the input and output devices 2140 and2145. The input devices 2140 enable the user to communicate informationand select commands to the electronic system. The input devices 2140include alphanumeric keyboards and pointing devices (also called “cursorcontrol devices”), cameras (e.g., webcams), microphones or similardevices for receiving voice commands, etc. The output devices 2145display images generated by the electronic system or otherwise outputdata. The output devices 2145 include printers and display devices, suchas cathode ray tubes (CRT) or liquid crystal displays (LCD), as well asspeakers or similar audio output devices. Some embodiments includedevices such as a touchscreen that function as both input and outputdevices.

Finally, as shown in FIG. 21, bus 2105 also couples electronic system2100 to a network 2125 through a network adapter (not shown). In thismanner, the computer can be a part of a network of computers (such as alocal area network (“LAN”), a wide area network (“WAN”), or an Intranet,or a network of networks, such as the Internet. Any or all components ofelectronic system 2100 may be used in conjunction with the invention.

Some embodiments include electronic components, such as microprocessors,storage and memory that store computer program instructions in amachine-readable or computer-readable medium (alternatively referred toas computer-readable storage media, machine-readable media, ormachine-readable storage media). Some examples of such computer-readablemedia include RAM, ROM, read-only compact discs (CD-ROM), recordablecompact discs (CD-R), rewritable compact discs (CD-RW), read-onlydigital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a varietyof recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.),flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.),magnetic and/or solid state hard drives, read-only and recordableBlu-Ray® discs, ultra density optical discs, any other optical ormagnetic media, and floppy disks. The computer-readable media may storea computer program that is executable by at least one processing unitand includes sets of instructions for performing various operations.Examples of computer programs or computer code include machine code,such as is produced by a compiler, and files including higher-level codethat are executed by a computer, an electronic component, or amicroprocessor using an interpreter.

While the above discussion primarily refers to microprocessor ormulti-core processors that execute software, some embodiments areperformed by one or more integrated circuits, such as applicationspecific integrated circuits (ASICs) or field programmable gate arrays(FPGAs). In some embodiments, such integrated circuits executeinstructions that are stored on the circuit itself. In addition, someembodiments execute software stored in programmable logic devices(PLDs), ROM, or RAM devices.

As used in this specification and any claims of this application, theterms “computer”, “server”, “processor”, and “memory” all refer toelectronic or other technological devices. These terms exclude people orgroups of people. For the purposes of the specification, the termsdisplay or displaying means displaying on an electronic device. As usedin this specification and any claims of this application, the terms“computer readable medium,” “computer readable media,” and “machinereadable medium” are entirely restricted to tangible, physical objectsthat store information in a form that is readable by a computer. Theseterms exclude any wireless signals, wired download signals, and anyother ephemeral signals.

VI. Map Service Environment

Various embodiments may operate within a map service operatingenvironment. FIG. 22 illustrates a map service operating environment,according to some embodiments. A map service 2230 (also referred to asmapping service) may provide map services for one or more client devices2202 a-2202 c in communication with the map service 2230 through variouscommunication methods and protocols. A map service 2230 in someembodiments provides map information and other map-related data, such astwo-dimensional map image data (e.g., aerial view of roads utilizingsatellite imagery), three-dimensional map image data (e.g., traversablemap with three-dimensional features, such as buildings), route anddirection calculation (e.g., ferry route calculations or directionsbetween two points for a pedestrian), real-time navigation data (e.g.,turn-by-turn visual navigation data in two or three dimensions),location data (e.g., where is the client device currently located), andother geographic data (e.g., wireless network coverage, weather, trafficinformation, or nearby points-of-interest). In various embodiments, themap service data may include localized labels for different countries orregions; localized labels may be utilized to present map labels (e.g.,street names, city names, points of interest) in different languages onclient devices. Client devices 2202 a-2202 c may utilize these mapservices by obtaining map service data. Client devices 2202 a-2202 c mayimplement various techniques to process map service data. Client devices2202 a-2202 c may then provide map services to various entities,including, but not limited to, users, internal software or hardwaremodules, and/or other systems or devices external to the client devices2202 a-2202 c.

In some embodiments, a map service is implemented by one or more nodesin a distributed computing system. Each node may be assigned one or moreservices or components of a map service. Some nodes may be assigned thesame map service or component of a map service. A load balancing node insome embodiments distributes access or requests to other nodes within amap service. In some embodiments a map service is implemented as asingle system, such as a single server. Different modules or hardwaredevices within a server may implement one or more of the variousservices provided by a map service.

A map service in some embodiments provides map services by generatingmap service data in various formats. In some embodiments, one format ofmap service data is map image data. Map image data provides image datato a client device so that the client device may process the image data(e.g., rendering and/or displaying the image data as a two-dimensionalor three-dimensional map). Map image data, whether in two or threedimensions, may specify one or more map tiles. A map tile may be aportion of a larger map image. Assembling together the map tiles of amap produces the original map. Tiles may be generated from map imagedata, routing or navigation data, or any other map service data. In someembodiments map tiles are raster-based map tiles, with tile sizesranging from any size both larger and smaller than a commonly-used 256pixel by 256 pixel tile. Raster-based map tiles may be encoded in anynumber of standard digital image representations including, but notlimited to, Bitmap (.bmp), Graphics Interchange Format (.gif), JointPhotographic Experts Group (.jpg, .jpeg, etc.), Portable NetworksGraphic (.png), or Tagged Image File Format (.tiff). In someembodiments, map tiles are vector-based map tiles, encoded using vectorgraphics, including, but not limited to, Scalable Vector Graphics (.svg)or a Drawing File (.drw). Some embodiments also include tiles with acombination of vector and raster data. Metadata or other informationpertaining to the map tile may also be included within or along with amap tile, providing further map service data to a client device. Invarious embodiments, a map tile is encoded for transport utilizingvarious standards and/or protocols.

In various embodiments, map tiles may be constructed from image data ofdifferent resolutions depending on zoom level. For instance, for lowzoom level (e.g., world or globe view), the resolution of map or imagedata need not be as high relative to the resolution at a high zoom level(e.g., city or street level). For example, when in a globe view, theremay be no need to render street level artifacts as such objects would beso small as to be negligible in many cases.

A map service in some embodiments performs various techniques to analyzea map tile before encoding the tile for transport. This analysis mayoptimize map service performance for both client devices and a mapservice. In some embodiments map tiles are analyzed for complexity,according to vector-based graphic techniques, and constructed utilizingcomplex and non-complex layers. Map tiles may also be analyzed forcommon image data or patterns that may be rendered as image textures andconstructed by relying on image masks. In some embodiments, raster-basedimage data in a map tile contains certain mask values, which areassociated with one or more textures. Some embodiments also analyze maptiles for specified features that may be associated with certain mapstyles that contain style identifiers.

Other map services generate map service data relying upon various dataformats separate from a map tile in some embodiments. For instance, mapservices that provide location data may utilize data formats conformingto location service protocols, such as, but not limited to, RadioResource Location services Protocol (RRLP), TIA 801 for Code DivisionMultiple Access (CDMA), Radio Resource Control (RRC) position protocol,or LTE Positioning Protocol (LPP). Embodiments may also receive orrequest data from client devices identifying device capabilities orattributes (e.g., hardware specifications or operating system version)or communication capabilities (e.g., device communication bandwidth asdetermined by wireless signal strength or wire or wireless networktype).

A map service may obtain map service data from internal or externalsources. For example, satellite imagery used in map image data may beobtained from external services, or internal systems, storage devices,or nodes. Other examples may include, but are not limited to, GPSassistance servers, wireless network coverage databases, business orpersonal directories, weather data, government information (e.g.,construction updates or road name changes), or traffic reports. Someembodiments of a map service may update map service data (e.g., wirelessnetwork coverage) for analyzing future requests from client devices.

Various embodiments of a map service may respond to client devicerequests for map services. These requests may be a request for aspecific map or portion of a map. Some embodiments format requests for amap as requests for certain map tiles. In some embodiments, requestsalso supply the map service with starting locations (or currentlocations) and destination locations for a route calculation. A clientdevice may also request map service rendering information, such as maptextures or style sheets. In at least some embodiments, requests arealso one of a series of requests implementing turn-by-turn navigation.Requests for other geographic data may include, but are not limited to,current location, wireless network coverage, weather, trafficinformation, or nearby points-of-interest.

A map service, in some embodiments, analyzes client device requests tooptimize a device or map service operation. For instance, a map servicemay recognize that the location of a client device is in an area of poorcommunications (e.g., weak wireless signal) and send more map servicedata to supply a client device in the event of loss in communication orsend instructions to utilize different client hardware (e.g.,orientation sensors) or software (e.g., utilize wireless locationservices or Wi-Fi positioning instead of GPS-based services). In anotherexample, a map service may analyze a client device request forvector-based map image data and determine that raster-based map databetter optimizes the map image data according to the image's complexity.Embodiments of other map services may perform similar analysis on clientdevice requests and as such the above examples are not intended to belimiting.

Various embodiments of client devices (e.g., client devices 2202 a-2202c) are implemented on different portable-multifunction device types.Client devices 2202 a-2202 c utilize map service 2230 through variouscommunication methods and protocols. In some embodiments, client devices2202 a-2202 c obtain map service data from map service 2230. Clientdevices 2202 a-2202 c request or receive map service data. Clientdevices 2202 a-2202 c then process map service data (e.g., render and/ordisplay the data) and may send the data to another software or hardwaremodule on the device or to an external device or system.

A client device, according to some embodiments, implements techniques torender and/or display maps. These maps may be requested or received invarious formats, such as map tiles described above. A client device mayrender a map in two-dimensional or three-dimensional views. Someembodiments of a client device display a rendered map and allow a user,system, or device providing input to manipulate a virtual camera in themap, changing the map display according to the virtual camera'sposition, orientation, and field-of-view. Various forms and inputdevices are implemented to manipulate a virtual camera. In someembodiments, touch input, through certain single or combination gestures(e.g., touch-and-hold or a swipe) manipulate the virtual camera. Otherembodiments allow manipulation of the device's physical location tomanipulate a virtual camera. For instance, a client device may be tiltedup from its current position to manipulate the virtual camera to rotateup. In another example, a client device may be tilted forward from itscurrent position to move the virtual camera forward. Other input devicesto the client device may be implemented including, but not limited to,auditory input (e.g., spoken words), a physical keyboard, mouse, and/ora joystick.

Some embodiments provide various visual feedback to virtual cameramanipulations, such as displaying an animation of possible virtualcamera manipulations when transitioning from two-dimensional map viewsto three-dimensional map views. Some embodiments also allow input toselect a map feature or object (e.g., a building) and highlight theobject, producing a blur effect that maintains the virtual camera'sperception of three-dimensional space.

In some embodiments, a client device implements a navigation system(e.g., turn-by-turn navigation). A navigation system provides directionsor route information, which may be displayed to a user. Some embodimentsof a client device request directions or a route calculation from a mapservice. A client device may receive map image data and route data froma map service. In some embodiments, a client device implements aturn-by-turn navigation system, which provides real-time route anddirection information based upon location information and routeinformation received from a map service and/or other location system,such as Global Positioning Satellite (GPS). A client device may displaymap image data that reflects the current location of the client deviceand update the map image data in real-time. A navigation system mayprovide auditory or visual directions to follow a certain route.

A virtual camera is implemented to manipulate navigation map dataaccording to some embodiments. Some embodiments of client devices allowthe device to adjust the virtual camera display orientation to biastoward the route destination. Some embodiments also allow virtual camerato navigation turns simulating the inertial motion of the virtualcamera.

Client devices implement various techniques to utilize map service datafrom map service. Some embodiments implement some techniques to optimizerendering of two-dimensional and three-dimensional map image data. Insome embodiments, a client device locally stores rendering information.For instance, a client stores a style sheet, which provides renderingdirections for image data containing style identifiers. In anotherexample, common image textures may be stored to decrease the amount ofmap image data transferred from a map service. Client devices indifferent embodiments implement various modeling techniques to rendertwo-dimensional and three-dimensional map image data, examples of whichinclude, but are not limited to: generating three-dimensional buildingsout of two-dimensional building footprint data; modeling two-dimensionaland three-dimensional map objects to determine the client devicecommunication environment; generating models to determine whether maplabels are seen from a certain virtual camera position; and generatingmodels to smooth transitions between map image data. Some embodiments ofclient devices also order or prioritize map service data in certaintechniques. For instance, a client device detects the motion or velocityof a virtual camera, which if exceeding certain threshold values,lower-detail image data is loaded and rendered of certain areas. Otherexamples include: rendering vector-based curves as a series of points,preloading map image data for areas of poor communication with a mapservice, adapting textures based on display zoom level, or rendering mapimage data according to complexity.

In some embodiments, client devices communicate utilizing various dataformats separate from a map tile. For instance, some client devicesimplement Assisted Global Positioning Satellites (A-GPS) and communicatewith location services that utilize data formats conforming to locationservice protocols, such as, but not limited to, Radio Resource Locationservices Protocol (RRLP), TIA 801 for Code Division Multiple Access(CDMA), Radio Resource Control (RRC) position protocol, or LTEPositioning Protocol (LPP). Client devices may also receive GPS signalsdirectly. Embodiments may also send data, with or without solicitationfrom a map service, identifying the client device's capabilities orattributes (e.g., hardware specifications or operating system version)or communication capabilities (e.g., device communication bandwidth asdetermined by wireless signal strength or wire or wireless networktype).

FIG. 22 illustrates one possible embodiment of an operating environment2200 for a map service 2230 and client devices 2202 a-2202 c. In someembodiments, devices 2202 a, 2202 b, and 2202 c communicate over one ormore wire or wireless networks 2210. For example, wireless network 2210,such as a cellular network, can communicate with a wide area network(WAN) 2220, such as the Internet, by use of gateway 2214. A gateway 2214in some embodiments provides a packet oriented mobile data service, suchas General Packet Radio Service (GPRS), or other mobile data serviceallowing wireless networks to transmit data to other networks, such aswide area network 2220. Likewise, access device 2212 (e.g., IEEE 802.11gwireless access device) provides communication access to WAN 2220.Devices 2202 a and 2202 b can be any portable electronic or computingdevice capable of communicating with a map service. Device 2202 c can beany non-portable electronic or computing device capable of communicatingwith a map service.

In some embodiments, both voice and data communications are establishedover wireless network 2210 and access device 2212. For instance, device2202 a can place and receive phone calls (e.g., using voice overInternet Protocol (VoIP) protocols), send and receive e-mail messages(e.g., using Simple Mail Transfer Protocol (SMTP) or Post OfficeProtocol 3 (POP3)), and retrieve electronic documents and/or streams,such as web pages, photographs, and videos, over wireless network 2210,gateway 2214, and WAN 2220 (e.g., using Transmission ControlProtocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP)).Likewise, in some implementations, devices 2202 b and 2202 c can placeand receive phone calls, send and receive e-mail messages, and retrieveelectronic documents over access device 2212 and WAN 2220. In variousembodiments, any of the illustrated client device may communicate withmap service 2230 and/or other service(s) 2250 using a persistentconnection established in accordance with one or more securityprotocols, such as the Secure Sockets Layer (SSL) protocol or theTransport Layer Security (TLS) protocol.

Devices 2202 a and 2202 b can also establish communications by othermeans. For example, wireless device 2202 a can communicate with otherwireless devices (e.g., other devices 2202 b, cell phones, etc.) overthe wireless network 2210. Likewise devices 2202 a and 2202 b canestablish peer-to-peer communications 2240 (e.g., a personal areanetwork) by use of one or more communication subsystems, such asBluetooth® communication from Bluetooth Special Interest Group, Inc. ofKirkland, Wash. Device 2202 c can also establish peer to peercommunications with devices 2202 a or 2202 b (not shown). Othercommunication protocols and topologies can also be implemented. Devices2202 a and 2202 b may also receive Global Positioning Satellite (GPS)signals from GPS satellites 2260.

Devices 2202 a, 2202 b, and 2202 c can communicate with map service 2230over the one or more wire and/or wireless networks, 2210 or 2212. Forinstance, map service 2230 can provide a map service data to renderingdevices 2202 a, 2202 b, and 2202 c. Map service 2230 may alsocommunicate with other services 2250 to obtain data to implement mapservices. Map service 2230 and other services 2250 may also receive GPSsignals from GPS satellites 2260.

In various embodiments, map service 2230 and/or other service(s) 2250are configured to process search requests from any of client devices.Search requests may include but are not limited to queries for business,address, residential locations, points of interest, or some combinationthereof. Map service 2230 and/or other service(s) 2250 may be configuredto return results related to a variety of parameters including but notlimited to a location entered into an address bar or other text entryfield (including abbreviations and/or other shorthand notation), acurrent map view (e.g., user may be viewing one location on themultifunction device while residing in another location), currentlocation of the user (e.g., in cases where the current map view did notinclude search results), and the current route (if any). In variousembodiments, these parameters may affect the composition of the searchresults (and/or the ordering of the search results) based on differentpriority weightings. In various embodiments, the search results that arereturned may be a subset of results selected based on specific criteriainclude but not limited to a quantity of times the search result (e.g.,a particular point of interest) has been requested, a measure of qualityassociated with the search result (e.g., highest user or editorialreview rating), and/or the volume of reviews for the search results(e.g., the number of times the search result has been review or rated).

In various embodiments, map service 2230 and/or other service(s) 2250are configured to provide auto-complete search results that aredisplayed on the client device, such as within the mapping application.For instance, auto-complete search results may populate a portion of thescreen as the user enters one or more search keywords on themultifunction device. In some cases, this feature may save the user timeas the desired search result may be displayed before the user enters thefull search query. In various embodiments, the auto complete searchresults may be search results found by the client on the client device(e.g., bookmarks or contacts), search results found elsewhere (e.g.,from the Internet) by map service 2230 and/or other service(s) 2250,and/or some combination thereof. As is the case with commands, any ofthe search queries may be entered by the user via voice or throughtyping. The multifunction device may be configured to display searchresults graphically within any of the map display described herein. Forinstance, a pin or other graphical indicator may specify locations ofsearch results as points of interest. In various embodiments, responsiveto a user selection of one of these points of interest (e.g., a touchselection, such as a tap), the multifunction device is configured todisplay additional information about the selected point of interestincluding but not limited to ratings, reviews or review snippets, hoursof operation, store status (e.g., open for business, permanently closed,etc.), and/or images of a storefront for the point of interest. Invarious embodiments, any of this information may be displayed on agraphical information card that is displayed in response to the user'sselection of the point of interest.

In various embodiments, map service 2230 and/or other service(s) 2250provide one or more feedback mechanisms to receive feedback from clientdevices 2202 a-2202 c. For instance, client devices may provide feedbackon search results to map service 2230 and/or other service(s) 2250(e.g., feedback specifying ratings, reviews, temporary or permanentbusiness closures, errors etc.); this feedback may be used to updateinformation about points of interest in order to provide more accurateor more up-to-date search results in the future. In some embodiments,map service 2230 and/or other service(s) 2250 may provide testinginformation to the client device (e.g., an A/B test) to determine whichsearch results are best. For instance, at random intervals, the clientdevice may receive and present two search results to a user and allowthe user to indicate the best result. The client device may report thetest results to map service 2230 and/or other service(s) 2250 to improvefuture search results based on the chosen testing technique, such as anA/B test technique in which a baseline control sample is compared to avariety of single-variable test samples in order to improve results.

While the invention has been described with reference to numerousspecific details, one of ordinary skill in the art will recognize thatthe invention can be embodied in other specific forms without departingfrom the spirit of the invention. For instance, many of the figuresillustrate various touch gestures (e.g., taps, swipe gestures, etc.).However, many of the illustrated operations could be performed viadifferent touch gestures (e.g., a swipe instead of a tap, etc.) or bynon-touch input (e.g., using a cursor controller, a keyboard, atouchpad/trackpad, a near-touch sensitive screen, etc.). In addition, anumber of the figures (including FIGS. 14, 15, and 17-19) conceptuallyillustrate processes. The specific operations of these processes may notbe performed in the exact order shown and described. The specificoperations may not be performed in one continuous series of operations,and different specific operations may be performed in differentembodiments. Furthermore, the process could be implemented using severalsub-processes, or as part of a larger macro process. Thus, one ofordinary skill in the art would understand that the invention is not tobe limited by the foregoing illustrative details, but rather is to bedefined by the appended claims.

1-31. (canceled)
 32. A non-transitory machine-readable medium storing amapping application executable by at least one processing unit of adevice, the mapping application comprising sets of instructions for:accessing a set of third-party application sources that hosts aplurality of third-party routing applications in order to retrieve a setof third-party routing applications; providing a user interface (UI) fordisplaying a set of selectable UI items each of which associated with athird-party routing application in the set of retrieved third-partyrouting applications; and upon selection of one of the selectable UIitems, displaying information about a third-party routing applicationthat is associated with the selected UI item.
 33. The non-transitorymachine-readable medium of claim 32, wherein the mapping applicationfurther comprises a set of instructions for providing route datacomprising first and second locations on a map to the third-partyapplication sources in order to retrieve the set of third-party routingapplications.
 34. The non-transitory machine-readable medium of claim33, wherein each third-party routing application in the set of routingapplications provides a different manner of navigation from the firstlocation to the second location on the map.
 35. The non-transitorymachine-readable medium of claim 33, wherein the route data comprises atleast one of names associated with the start and end locations, phonenumbers associated with the start and end locations, and address bookidentifiers associated with the start and end locations.
 36. Thenon-transitory machine-readable medium of claim 35, wherein the set ofinstructions for providing the route data comprises a set ofinstructions for redacting data that is defined as sensitive data fromthe route data before sending the route data to the third-partyapplication sources.
 37. The non-transitory machine-readable medium ofclaim 32, wherein the set of third-party routing applications comprisesrouting applications that are installable on the device and have notbeen installed on the device before.
 38. The non-transitorymachine-readable medium of claim 32, wherein the information compriseimages related to the associated third-party routing application. 39.The non-transitory machine-readable medium of claim 32, wherein theinformation comprise a set of user-provided reviews.
 40. Thenon-transitory machine-readable medium of claim 32, wherein theinformation comprise textual data that describes the particularthird-party application.
 41. The non-transitory machine-readable mediumof claim 32, the mapping application further comprising a set ofinstructions for displaying a particular selectable UI item along withthe displayed information about the third-party routing application forinstalling the third-party routing application on the device.
 42. Thenon-transitory machine-readable medium of claim 32, wherein the mappingapplication ranks the set of third-party routing applications based on aset of factors and displays the routing applications in the set based ontheir ranked order.
 43. The non-transitory machine-readable medium ofclaim 32, wherein the set of third-party routing applications is a firstset of third-party routing applications and the set of selectable UIitems is a first set of selectable UI items, the mapping applicationfurther comprising sets of instructions for: identifying a second set ofrouting applications that have been previously installed on the device,each routing application in the second set providing navigationinformation from a first location on a map to a second location on themap; and presenting a second set of selectable UI items each of whichassociated with a third-party routing application in the second set ofthird-party routing applications.
 44. The non-transitorymachine-readable medium of claim 43, wherein the UI comprises: a firstdisplay area for displaying the first set of third-party routingapplications and their associated UI items; and a second display areafor displaying the second set of third-party routing applications andtheir associated UI items.
 45. The non-transitory machine-readablemedium of claim 43, the mapping application further comprising a set ofinstructions for, upon selection of a selectable UI item in the secondset of selectable UI items, executing a third-party routing applicationassociated with the selected UI item on the device to display navigationinformation between the first and second locations.
 46. A method for amapping and navigation application executable by at least one processingunit of a device, the method comprising: accessing a set of third-partyapplication sources that hosts a plurality of third-party routingapplications in order to retrieve a set of third-party routingapplications; displaying a set of selectable user interface (UI) itemseach of which associated with a third-party routing application in theset of retrieved third-party routing applications; and upon selection ofone of the selectable UI items, displaying information about athird-party routing application that is associated with the selected UIitem.
 47. The method of claim 46 further comprising providing, to thethird-party application sources, route data comprising first and secondlocations on a map in order to retrieve the set of third-party routingapplications.
 48. The method of claim 47, wherein each third-partyrouting application in the set of routing applications provides adifferent manner of navigation from the first location to the secondlocation on the map.
 49. The method of claim 47, wherein the route datacomprises at least one of names associated with the start and endlocations, phone numbers associated with the start and end locations,and address book identifiers associated with the start and endlocations.
 50. The method of claim 49, wherein the set of instructionsfor providing the route data comprises a set of instructions forredacting data that is defined as sensitive data from the route databefore sending the route data to the third-party application sources.51. The method of claim 46, wherein the set of third-party routingapplications comprises routing applications that are installable on thedevice and have not been installed on the device before.